Sto cercando il modo di caricare i messaggi dal database e visualizzarli a schermo ricaricando ogni tot secondi senza che venga ricaricata la pagina, avete qualche soluzione?
Sto cercando il modo di caricare i messaggi dal database e visualizzarli a schermo ricaricando ogni tot secondi senza che venga ricaricata la pagina, avete qualche soluzione?
una soluzione è fare una richiesta ajax usando setTimeout:
per setTimeout, http://developer.mozilla.org/en/docs...dow.setTimeout
per ajax, http://www.prototypejs.org/
Pietro
grazie della risposta , solo che non ci capisco molto dai link che mi hai dato, mi potresti spiegare un pokino meglio.. dato che è la prima volta che uso ajax
se hai tempo mi faresti un piccolo esempio
vorrei sostituire.. il tutto a questo codice in modo da non usare il refresh...
<?php
session_start();
//Variabile che contiene il codice della stanza in cui ci si trova
$stanza= $_SESSION['stanza'];
$nick= $_SESSION['nick'];
require 'config.php';
//Stabilisco la connessione al database se non la stabilisco restituisce il mess seguente
$conn=mysql_connect($host,$nome,$password) or die("Errore nella connessione a MySql: " . mysql_error());
//Vado a stabilire la connessione con il database
mysql_select_db($database,$conn) or die("Errore nella selezione del db: " . mysql_error());
//echo $nick;
$array_nominativi=array();
$array_messaggi=array();
$array_colore=array();
$array_font=array();
$array_dimensioni=array();
$contatore=1;
$ora=time();
//Vado ad aggiornare il timeout dell'utente
$Query=' UPDATE utenti_online SET time_out ="'.$ora.'"'.'WHERE nick="'.$nick.'"';
$ris = mysql_query($Query,$conn)or die("Errore nella query: " . mysql_error());
//Metto in una variabile l'ora settata a ntempo prima dell'ora attuale
$ora=$ora-$durata_messaggio;
//Vado a fare la query per prendere tutti i mess da una certa ora in poi e di una certa stanza in modo da non stamparli tutti
$Query='SELECT * FROM messaggi WHERE (orario>'.$ora.')and(codice_stanza="'.$stanza.'")' ;
$ris = mysql_query($Query,$conn)or die("Errore nella query: " . mysql_error());
//Vado a mettere i mess che ho nel file in un array
while($riga = mysql_fetch_array($ris)) {
$array_nominativi[$contatore]=$riga[0];
$array_messaggi[$contatore]=$riga[1];
$array_colore[$contatore]=$riga[3];
$array_font[$contatore]=$riga[4];
$array_dimensioni[$contatore]=$riga[5];
$contatore++;
}
//Vado a sampare i messaggi all'inverso
$contatore=$contatore-1;
print' <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<meta http-equiv="refresh" content="3;URL=visualizza_messaggio.php">
<title>
</title>
</head>
<body>';
while($contatore!=0) {
//Vado a caricare il colore del font dal database
$colore=$array_colore[$contatore];
//Vado a caricare lo stile del font
$font=$array_font[$contatore];
//Vado a caricare la dimensione
$dimensione=$array_dimensioni[$contatore];
$nominativi=$array_nominativi[$contatore];
//A seconda della dimenzione del carattere stampo tot caratteri in una riga
switch ($dimensione) {
case 1:
$app=150;
$cost=8;
break;
case 2:
$app=110;
$cost=8;
break;
case 3:
$app=90;
$cost=4;
break;
case 4:
$app=75;
$cost=2;
break;
case 5:
$app=55;
$cost=1;
break;
case 6:
$app=30;
$cost=-1;
break;
case 7:
$app=15;
$cost=-3;
break;
}
//Vado a fare la queri per vedere se uno è mod o no
$Query='SELECT * FROM dati_utente WHERE(nick="'.$nominativi.'")';
$ris = mysql_query($Query,$conn)or die("Errore nella query: " . mysql_error());
$riga = mysql_fetch_array($ris);
if ($riga[6]==1) {
print '<font color="red"><u>'.$nominativi.':</u></font>';
}else {
print '<u>'.$nominativi.':</u>';
}
print'<font color="'.$colore.'"face="'.$font.'"size="'.$dimens ione.'">';
$i=0;
$cont=0;
//$spazio=0;
//Vado a prendere la lunghezza del nominativo
$lunghezza_nom=strlen($nominativi);
//Vado a controllare la lunghezza del messaggio
$lunghezza_mess=strlen($array_messaggi[$contatore]);
$frase=$array_messaggi[$contatore];
do {
if (($cont>=$app) && ($cont<=$app+9)) {
if (($frase[$i]!=' ')&&($cont!=$app+9)) {
echo $frase[$i];
}else {
echo $frase[$i];
echo'
';
//Vado a mettere un tot di spazzi vuoti
for ($spazio=0;$spazio<=$lunghezza_nom+$cost;$spazio++ ) {
echo'';
}
$cont=-1;
}
}else {
echo $frase[$i];
}
$cont++;
$i++;
} while ($i!=$lunghezza_mess);
echo'</font>
';
$contatore--;
}
print'</body>
</html>';
?>
Spiegherà certamente assai meglio di me, l'articolo di Andrea Giammarchi in questo link:
http://javascript.html.it/guide/leggi/95/guida-ajax/
![]()
Pietro