salve a tutti
Ho un problema con l'invio dei messaggi in una community:
In pratica quelloc che intendo fare è questo:
Un utente registrato e loggato deve inviare un msg ad un altro utente.
quest'ultimo deve riceve il msg attraverso l'apertura di un popup.
la funzione che mi stabilisce la ricezione del messaggio è la seguente:
Codice PHP:
function get_messaggi($id,$tipo,$start,$rec_pagina,$update){
global $_CONFIG;
$messaggi = mysql_query("
SELECT *
FROM ".$_CONFIG['table_messaggi']."
INNER JOIN ".$_CONFIG['table_utenti']."
ON ".$_CONFIG['table_messaggi'].".id_mittente = ".$_CONFIG['table_utenti'].".id
WHERE ".$_CONFIG['table_messaggi'].".tipo <= '".$tipo."' AND
".$_CONFIG['table_messaggi'].".id_destinatario = ".$id."
ORDER BY ".$_CONFIG['table_messaggi'].".data_invio DESC, ".$_CONFIG['table_messaggi'].".letto, ".$_CONFIG['table_messaggi'].".id_messaggio DESC
LIMIT ".$start.", ".$rec_pagina
);
$salva = mysql_query("
SELECT *
FROM ".$_CONFIG['table_messaggi']."
INNER JOIN ".$_CONFIG['table_utenti']."
ON ".$_CONFIG['table_messaggi'].".id_mittente = ".$_CONFIG['table_utenti'].".id
WHERE ".$_CONFIG['table_messaggi'].".tipo <= '".$tipo."' AND
".$_CONFIG['table_messaggi'].".id_destinatario = ".$id."
ORDER BY ".$_CONFIG['table_messaggi'].".data_invio DESC, ".$_CONFIG['table_messaggi'].".letto, ".$_CONFIG['table_messaggi'].".id_messaggio DESC
LIMIT ".$start.", ".$rec_pagina
);
if ($update=='y'){
while ($messaggio=mysql_fetch_array($messaggi)){
mysql_query("
UPDATE ".$_CONFIG['table_messaggi']."
SET letto = 'y'
WHERE id_messaggio = ".$messaggio["id_messaggio"]
);
}
}
if (mysql_num_rows($salva)>0){
return $salva;
}else{
return false;
}
}
La funzione che mi permette di scrivere il messaggio invece è questa:
Codice PHP:
function scrivi_messaggio($mittente,$destinatario,$tipo,$testo)
{
global $_CONFIG;
$day = date("d",time());
$month = date("m",time());
$year = date("Y",time());
$data_log = $year ."-". $month ."-". $day;
mysql_query ("
INSERT INTO ".$_CONFIG['table_messaggi']."
(id_mittente, id_destinatario, tipo, testo, data_invio, letto)
VALUES
(".$mittente.", ".$destinatario.", '".$tipo."', '".$testo."', '".$data_log."', 'n')
");
if (mysql_insert_id()){
return "Messaggio inviato correttamente";
}else{
return "Messaggio NON inviato";
}
}
la funzione che mi seleziona i msg dal database è la seguente:
Codice PHP:
function messaggi(){
global $_CONFIG;
$mess = mysql_query("
SELECT id_messaggio
FROM ".$_CONFIG["table_messaggi"]."
");
$numero = mysql_num_rows($mess);
return $numero;
}
Mentre quella utilizzata per cancellare i messaggi è la seguente:
Codice PHP:
function cancella_messaggio($id){
global $_CONFIG;
mysql_query("
DELETE FROM ".$_CONFIG["table_messaggi"]."
WHERE id_messaggio = ".$id
);
}
La pagina messaggi.php si compone in questo modo:
Codice PHP:
<?
include_once("include/config.php");
include_once("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';
}
$start = isset($_GET["start"])?$_GET["start"]:'0';
$rec_pagina = '8';
$prof = get_profilo($_GET["id"]);
?>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="tabsezioni" >
<tr>
<td height="41" align="center" class="cellaheaderprofilo"><span class="linkbianco">MESSAGGI DI:
Codice PHP:
<? echo $prof["username"]; ?>
</span></td>
</tr>
Codice PHP:
<?
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_tot);
$numero_pagine = ceil($num_record/$rec_pagina);
?>
<tr>
<td bgcolor="#FFFFFF">
Codice PHP:
<?
while ($row = mysql_fetch_array($messaggi)){
$data_m = explode("-",$row["data_invio"]);
?>
<table width="96%" border="0" align="center" cellpadding="3" cellspacing="1" class="tabsezioni">
<tr>
<td class="cellaheadeinfoutente">Messaggio
Codice PHP:
<? if ($row["tipo"]=='1'){ echo "privato"; }else{ echo "pubblico"; } ?>
da:
Codice PHP:
[url="home.php<?=$link?>&p=profilo&id=<? echo $row["]" class="minilink_m"><? echo $row["username"] ?>[/url],
Data:
Codice PHP:
<? echo $data_m[2]."/".$data_m[1]."/".$data_m[0]; ?>
<? if ($_GET["id"]==$user["id_user"]){ ?>
- [/PHP]" class="minilink_m">RISPONDI
- [/PHP]<a href="home.php<?=$link?>&p=cancella&id=<? echo $row["id_messaggio"]; ?>" class="minilink_m Stile1">CANCELLA
</a>
<? } ?>[/PHP] </td>
</tr>
<tr>
<td bgcolor="#FFFFFF" class="cellasezioni_letto_
Codice PHP:
<? echo $row["letto"]; ?>"><? echo estrazione_dati($row["testo"]); ?>
</td>
</tr>
</table>
Codice PHP:
<?
}
if ($numero_pagine > 1) {
//inizio della condizione per creare l'elenco delle pagine
echo "<div class='minilink'>
[b]Pagine:[/b] [ [url='".$_SERVER[']1[/url] ] ";
for ($pagina = 2; $pagina <= $numero_pagine; $pagina++) {
echo "[ [url='".$_SERVER[']".$pagina. "[/url] ] ";
}
echo "</div>";
} // fine "elenco"
?>
</td>
</tr>
<tr >
<td height="20" bgcolor="#FFFFFF"></td>
</tr>
Codice PHP:
<?
}
}else{
header("Refresh: 3;URL=home.php");
echo '<div align="center">NON Sei connesso ... ... </div>';
}
?>
</table>
In pratica tutto quello che ho scritto funziona e non da lacun problema sia per quanto riguarda l'invio che per la cancellazione dei msg.
Per un ulteriore chiarimento della cosa posto anche le pagine Cancella (msg) e scrivi (msg).
magari può servire a qualcuno come spunto.
la pagina cancella.php è cosi strutturata:
Codice PHP:
<?
include_once("include/config.php");
include_once("include/auth.lib.php");
list($status, $user) = auth_get_status();
if ($status == AUTH_LOGGED){
?>
Il codice per la cancellazione è il seguente:
Codice PHP:
<?
if (isset($_GET["id"])){
cancella_messaggio($_GET["id"]);
header("Refresh: 0;URL=home.php".$link."&p=messaggi&id=".$user["id_user"]."&update=y");
echo '<div align="center">Cancellazione effettuata con successo.</div>';
}
?>
La pagina scrivi.php (msg) è cosi strutturata:
Codice PHP:
<?
include_once("include/config.php");
include_once("include/auth.lib.php");
list($status, $user) = auth_get_status();
$prof = get_profilo($_GET["id"]);
if ($status == AUTH_LOGGED){
?>
mentre il codice utilizzato per inviare il msg è:
Codice PHP:
<?
if ((isset($_POST["Submit"])) AND ($_POST["Submit"] = "Invia")){
if ($_POST["testo"] != ""){
echo scrivi_messaggio($user["id_user"],$prof["id"],$_POST["tipo"],inserimento_dati($_POST["testo"]))."
";
}else{
echo "Inserire un testo. Premere il tasto Indietro del tuo Browser per ripovare.
";
}
}else{
?>
Il form di invio è il seguente:
[HTML]<form name="form1" method="post" action="<? echo $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];?>">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center">
<textarea name="testo" cols="55" rows="10" id="testo"></textarea></td>
</tr>
<tr>
<td align="center">
<input name="tipo" type="radio" value="1" checked="checked">
<span class="Stile1"> Privato</span>
<input name="tipo" type="radio" value="0">
<span class="Stile1"> Pubblico</span></td>
</tr>
<tr>
<td align="center"><input name="Annulla" type="reset" id="Annulla" value="Annulla">
-
<input name="Submit" type="submit" id="Submit" value="Invia"></td>
</tr>
</table>
</form>
Come si vede attraverso questo codice si ha la possibilità di inviare sia msg privati (che possono essere letti solo da chi lo riceve ) che msg pubblici (che possono essere letti da tutti gli utenti registrati alla community.
Per concludere dop0o tutto il codice scritto ripeto il mio problema riguarda la modifica dell'invio msg in pratica a me servirebbe fare in modo che i msg inviati vengano visualizzati attraverso l'ìapertura di un popup nel browser di chi lo riceve.
Spero di non aver fatto troppi casini e vi auguro buona giornata a tutti.