- Home
- Categorie
- Coding e Sistemistica
- Coding
- Bacheca con chiamata asincrona
-
Bacheca con chiamata asincrona
Sto realizzando una sorta di bacheca usando php mysql e ajax
Questa e amico.php
[PHP]
<?php @include 'config2.php';
?>
<html>
<head>
<title>Shoutbox</title>
<script language="JavaScript" type="text/javascript" src="ajax.js">
</script>
</head>
<body><?
$query = "SELECT * FROM shoutbox ORDER BY id DESC";
$result = @mysql_query($query) or die (mysql_error());
if (mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_array($result))
{
$nick = stripslashes($row['nick']);
$testo = stripslashes($row['testo']);
$data = $row['data'];// formattiamo la data in "gg-mm-aaaa" $data = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $data); $sito_web = $row['sito_web']; echo "$nick - $testo - $data <br>\r";}
}
@mysql_close();
?>
<div id="modulo">
</div>
<form name="form_invio" method="POST" onsubmit="salva(); return false;">
Nick: <br><input name="nick" type="text"><br>
Sito Web: <br><input name="sito_web" type="text"><br>
Commento <br><input name="testo" type="text"><br>
<input type="submit" name="submit" value="Invia"><br>
</form>
</body>
</html>[/PHP]
questo e invia5.php sarebbe il file di invio dati
[PHP]
<?php
@include 'config2.php';
if (isset($_POST['nick']) && isset($_POST['testo']) && isset($_POST['sito_web']))
{
$nick=addslashes($_POST['nick']);
$testo=addslashes($_POST['testo']);
$sito_web=addslashes($_POST['sito_web']);
$query = "INSERT into shoutbox (nick, testo, sito_web, data) VALUES ('$nick', '$testo', '$sito_web', now())";
$result = @mysql_query($query) or die (mysql_error());
@mysql_close();
}
?>
[/PHP]E questo sarebbe il file javascript
[HTML]
// funzione per la chiamata dell'oggetto XMLHttpRequest
function ajax(){
var ajaxRequest;
try{
// controllo per i browser diversi da IE
ajaxRequest = new XMLHttpRequest();
}catch (e){
// contorollo per IE
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e){
// controllo per i browser che non supportano l'XMLHttpRequest
alert("Il browser non supporta questo ShoutBox");
return false;
}
}
}
return ajaxRequest;
}
// funzione per il salvataggio dei dati
function salva(){
htmlRequest = ajax();
if (htmlRequest==null){
alert ("Il browser non supporta richieste HTTP");
return;
}
// controlliamo i parametri obbligatori
if(document.form_invio.nick.value == "" || document.form_invio.nick.value == "NULL" || document.form_invio.testo.value == "" || document.form_invio.testo.value == "NULL")
{
alert('Inserisci sia il Nick che il testo');
return;
}
// inviamo i parametri al file per l'INSERT nel database
htmlRequest.open('POST', 'invia5.php');
htmlRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
htmlRequest.send('nick='+document.form_invio.nick.value+'&testo='+document.form_invio.testo.value+'&sito_web='+document.form_invio.sito_web.value);// svuotiamo il modulo per il messaggio
document.form_invio.testo.value = '';
document.form_invio.testo.focus();
}// funzione per mostrare i dati
function mostra() {
htmlRequest = ajax();
// controllo nel caso in cui non possa richiamato l'oggetto Xmlhttp
if (htmlRequest==null){
alert ("Il browser non supporta richieste HTTP");
return;
}
htmlRequest.onreadystatechange = function(){
// Restituisce lo stato della richiesta
if(htmlRequest.readyState == 4){
// Restituice il corpo della risposta come stringa
document.getElementById("modulo").innerHTML = htmlRequest.responseText;
}
}
// chiamata della pagina PHP che estrae i records
htmlRequest.open("GET", "amico.php", true);
htmlRequest.send(null);
}
// chiamata alla funzione
mostra();
// intevallo per l'aggiornamento della pagina
setInterval("mostra()",1000);[/HTML]
Il problema che nn ho capito come mostare a video in modo asincrono i commenti lasciati sulle bacheche degli altri utenti
Esempio
Mettiamo caso che io mi trovo sulla pagina amico.php?id=$3 devo fare in modo di mostrare solo i commenti relativi all id3Nel codice javascript qui
[HTML] // chiamata della pagina PHP che estrae i records
htmlRequest.open("GET", "amico.php", true);
htmlRequest.send(null);
[/HTML]
mi richiama la pagina amico.php ...praticamente io qui dovrei fargli capire che deve mostrarmi solo i commenti relativi all id3
C'è un modo per risolvere?Devo agire sul codice javascript?
-
Ciao carlitos1982,
fai una richiesta alla pagina amico.php?id=3 cosi da sapere l'id.
-
Ciao the darkita
La richiesta va fatta tramite questa codice?[html]// chiamata della pagina PHP che estrae i records
htmlRequest.open("GET", "amico.php", true);
htmlRequest.send(null);[/html]Mi chiedo...e possibile del codice php in questa stringa per ricavarmi l id della pagina da mostrare?
[html]htmlRequest.open("GET", "amico.php", true); [/html]
Io in questa stringa dovrei passarci l id della pagina amico in cui mi ritrovo inq uel momento...in modo da mostrarmi solo i messaggi relativi a quell utente..
-
@carlitos1982 said:
Ciao the darkita
La richiesta va fatta tramite questa codice?[html]// chiamata della pagina PHP che estrae i records
htmlRequest.open("GET", "amico.php", true);
htmlRequest.send(null);[/html]Mi chiedo...e possibile del codice php in questa stringa per ricavarmi l id della pagina da mostrare?
[html]htmlRequest.open("GET", "amico.php", true); [/html]Io in questa stringa dovrei passarci l id della pagina amico in cui mi ritrovo inq uel momento...in modo da mostrarmi solo i messaggi relativi a quell utente..Ho pensato una cosa... qui
[html]htmlRequest.open("GET", "amico.php", true); [/html]
invece di far puntare ad amico.php faccio puntare ad una pagina esterna
che chiamerò mostra.php quindi cosi'[html]htmlRequest.open("GET", "mostra.php", true); [/html]
Se creo una variabile di sessione contente l id del profilo che visito...inserendo poi quest ultima nella pagina mostra.php potrei permettere di far visualizzare la bacheca di messaggi relativa solo a quell id...e un ipotesi potrebbe andare?
-
Forse ci sono...si tratta di giocare un pò con le sessioni
