beh scusate se sto riesumando questo post ma dopo averci rinunciato oggi mi sono rimesso all'opera:
In pratica utilizzo le seguenti funzioni per elaborare il risultato di una funzione in php che mi controlla la presenza di nuovi msg sul mio db e a seconda della presenza o meno mi stampa a video un carattere So N.
Fino a questo punto tutto bene.
Vi posto un po di codice in modo darendere la cosa più chiara.
La funzione php che mi controlla la presenza di msg letti e non letti è la seguente:
Questa funzione la richiamo in un file chiamato condizione_popup.phpCodice PHP:function nuovi_messaggi_check($id_utente){
global $_CONFIG;
$messaggi = mysql_query("
SELECT id_messaggio
FROM ".$_CONFIG['table_messaggi']."
WHERE id_destinatario = ".$id_utente." AND
letto <> 'y'
");
if (mysql_num_rows($messaggi) > 0) {
$risultato = "S";
}else{
$risultato = "N";
}
return $risultato;
}
A questo punto nella home della community ho inserito le seguenti funzioni nell'header:Codice PHP:<?php
include_once("include/config.php");
include_once("include/auth.lib.php");
list($status, $user) = auth_get_status();
if($status == AUTH_LOGGED & auth_get_option("TRANSICTION METHOD") == AUTH_USE_LINK){
$link = "?uid=".$_GET['uid'];
}else $link = '?';
?>
<?
header("Content-type:text/html;charset=iso-8859-1");
echo nuovi_messaggi_check ($user["id_user"]);
?>
<script type="text/javascript">
var xmlhttp
var link = "<?=$link;?>";
//alert(link)
function loadResponseDoc(url)
{
var parameters = link + '&update=y';
//alert(parameters);
url += parameters;
//alert(url);
xmlhttp=null
// code for Mozilla, etc.
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest()
}
// code for IE
else if (window.ActiveXObject)
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
}
if (xmlhttp!=null)
{
xmlhttp.onreadystatechange=state_Change
xmlhttp.open("GET",url,false)
xmlhttp.send(null)
}
else
{
//alert("Your browser does not support XMLHTTP.")
}
}
function state_Change()
{
// if xmlhttp shows "loaded"
if (xmlhttp.readyState==4)
{
// if "OK"
if (xmlhttp.status==200)
{
var response = xmlhttp.responseText;
//alert(response);
if(response=='S')
{
window.open('pop_msg.php<?=$link?>&id=<?=$user['id_user']?>&update=y','toolbar=no,location=no,directori es=no,status=no,menub ar=no,scrollbar=no,resizable=no,copyhistory=yes,wi dth='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}
}
else
{
alert("Problem retrieving RESPONSE data:" + xmlhttp.statusText)
}
}
}
</script>
Le funzioni sopra scritte controllano il risultato della pagina condizione_popup.php e se trovano il valore S dovrebbero aprire una popup (che ho chiamato msg.php).
Quindi nella pagina msg.php inserisco una funzione che mi estrae il msg non letto eventualmente presente.
Tutta la procedura vorrei che si avviasse ogni tot secondi attraverso l'utilizzo di una funzione che ho chiamato temporizzazione:
<script type="text/javascript">
function temporizzazione()
{
window.setInterval("loadResponseDoc('condizione_po pup.php')", 1000);
}
</script>
Quindi il tag body della home l'ho modificato in questo modo:
<body bgcolor="#E6F7FF" onLoad="temporizzazione('loadResponseDoc(condizion e_popup.php)',2000)">
Ho provato a valutare se tutto funzionasse ma nonostante i vari alert siano risultati esatti non si apre la popup in presenza di nuovi msg.
Sapreste indicarmi cosa sbaglio?
Grazie e scusate se sono stato cosi lungo nella mia spiegazione.

Rispondi quotando