salve vorrei fare delle modifiche alla mia community in php e sono intenzionato a fare in modo che si possano ricevere msg da i vari utenti attraverso l'apertura di un popup in automatico.
in partica al momento quando sono presenti nuovi msg ho fatto ijn modo che comparisse un testo che avverte della presenza di nuovi msg utilizzando la seguente funzione:
Codice PHP:
function nuovi_messaggi($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 = "<font color='ff0000'>Nuovi (".mysql_num_rows($messaggi).")</font>";
}else{
$risultato = "";
}
return $risultato;
}
Questa funzione l'ho modificata in modo da poter estrarre valore S o N stampato in una pagina bianca in base alla presenza o meno di nuovi msg
Codice 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_query($messaggi)>0){
$risultato = "S";
}else{
$risultato = "N";
}
return $risultato;
}
Attraverso un echo faccio in modo che la pagina di verifica denominata control_newmsg.php
possa presentare il valore N o S utilizzando questo comando:
Codice PHP:
echo nuovi_messaggi_check ($user["id_user"]);
Quindi ho fatto un ulteriore file denominato pop_msg.php in cui vado a porre il codice che mi permette di estrapolare i dati realtivi al msg :
Codice PHP:
<?
include_once("log/include/config.php");
include_once("log/include/auth.lib.php");
list($status, $user) = auth_get_status();
if ($status == AUTH_LOGGED){
if($user["id_user"]==$_GET["id"]){
$type = '1';
$update = 'y';
}else{
$type = '0';
$update = 'n';
}
$prof = get_profilo($_GET["id"]);
?>
<?
if ((isset($_GET["id"])) AND ($messaggi = get_messaggi($_GET["id"],$type,$start,$rec_pagina,$update))){
$messaggi_tot = mysql_query("
SELECT *
FROM ".$_CONFIG['table_messaggi']."
WHERE ".$_CONFIG['table_messaggi'].".tipo <= '".$type."' AND
".$_CONFIG['table_messaggi'].".id_destinatario = ".$_GET["id"]
);
$num_record = mysql_num_rows($messaggi);
?>
<?
while ($row = mysql_fetch_array($messaggi)){
$data_m = explode("-",$row["data_invio"]);
?>
<table width="100%" border="0" align="center" cellpadding="4" cellspacing="2" style="margin-bottom:1px;">
<tr>
<td bgcolor="#0099CC" class="cellaheadercommunity"><b class="testoform">Messaggio
<? if ($row["tipo"]=='1'){ echo "PRIVATO"; }else{ echo "PUBBLICO"; } ?>
da:[/b] [url="home.php<?=$link?>&p=profilo&id=<? echo $row["]" class="menu"><? echo $row["username"] ?>[/url],
<b class="testoform">Data: <? echo $data_m[2]."/".$data_m[1]."/".$data_m[0]; ?>[/b]-
<b class="testoform">Ora: <? $ora_m = print($row["ora_invio"]);?>[/b]
<? if ($_GET["id"]==$user["id_user"]){ ?>
- [url="home.php<?=$link?>&p=scrivi&id=<? echo $row["]" class="menu">RISPONDI[/url]
- <a href="home.php<?=$link?>&p=cancella&id=<? echo $row["id_messaggio"]; ?>" class="menu">CANCELLA
</a>
<? } ?> </td>
</tr>
<tr>
<td class="cellasezioni_letto_<? echo $row["letto"]; ?>"><font style="font-family:Verdana, Arial, Helvetica, sans-serif"><?
$text = $row["testo"];
$newtext = wordwrap($text, 65, "\n", 1);
echo "$newtext\n"; ?></font></td>
</tr>
</table>
A questo punto nella home della communiti ho integrato queste due funzioni : una per il controllo del valore S o N :
var xmlhttp
codice:
function loadResponseDoc(url)
{
var parameters = "";
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.")
}
}
ed una che una volta verificata la condizione S mi faccia aprire il popup con il contenuto del msg:
codice:
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','toolbar=no,location=no,directories=no,status=no,menub ar=no,scrollbar=no,resizable=no,copyhistory=yes,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}
}
else
{
alert("Problem retrieving RESPONSE data:" + xmlhttp.statusText)
}
}
}
la mia domanda è se questa è l astrada da esegurie e se eventualmente ci sono metodi più semplici e diretti per poter effettuare l'invio dei msg attravero popup con contenuto dinamico.