- Home
- Categorie
- Coding e Sistemistica
- Javascript & Framework
- Contenuto che si aggiorni senza refresh classico
-
allora...questo codice va inserito nella pagina in cui mostro a video i messaggi giusto..?
Mi spiego la mia chat è composta da due pagine in php...Questa e minichat.php che mostra il form per l invio dei messaggi solo a chi è loggato..
[PHP]
<?php
//Apro la sessione e...
session_start();
// Sessione impostata a 10 min
ini_set('session.gc_maxlifetime', '1800');include "config.php"; // file di connessione al Db
//verifico se l utente è bannato o meno..
if($_SESSION['logged'] == 1 && mysql_num_rows(mysql_query("SELECT bannato FROM minichat WHERE bannato = '".$_SESSION[ 'nickname']. "'" )) > 0)
die('Sei bannato');//verifico che dopo il login io abbia la chiave di sessione ad 1
elseif($_SESSION['logged'] == 1)echo"
<BODY background="/modificaprofilo.jpeg">
//il form pe rl invio dei messagggi viene mostrato solo a chi è loggato
<form action="minichatframe2.php" name="chat" method="POST">
<textarea rows="2" size="40" maxlength="20" id="text" name="text" cols="30"></textarea><br><br>
<a href="javascript:Popup2('faccine2.htm')"><img src="faccine3/smile_sorriso.gif" border="0" alt="Qui trovi altre faccine da inserire!"></a>
<a href="javascript:Popup('faccine.htm')"><img src="faccine/smile.gif" border="0" alt="Inserisce le faccine che piu' ti piacciono!"></a>
<a href="javascript:Popup1('colori.htm')"><img src="colori.gif" border="0" alt="Inserisci il testo che vuoi colorare fra i tag <font>"></a>
<br>
<center><input type="image" src="inviochat.gif" ></center>";
?>[/PHP]poi ho la pagina che mostra a video il tutto..
minichat2.php
[PHP]
<?//Apro la sessione e...
session_start();include "config.php"; // file di connessione al Db
include "minichatframe.php";if(isset($_POST)){
$id_user="";
$text="";$id_user=mysql_real_escape_string($_SESSION['nickname']);
$text=htmlentities($_POST['text']);
$sesso=$_SESSION['sesso'];
if ((empty($text))== false) // se $text non è vuoto o nullo
{
$sql = "INSERT INTO minichat (id_user, testo,tempo,sessochat) VALUES ('$id_user','$text',CURRENT_TIME(),'$sesso')";
$query= @mysql_query ($sql) or die (mysql_error());$recuperoid=mysql_insert_id();
$trim_id=$recuperoid-60;$sql_delete="DELETE FROM minichat WHERE id<'$trim_id'";
$query= @mysql_query ($sql_delete) or die (mysql_error());}
}else{
}$sql_select="SELECT id_user, testo,tempo,sessochat FROM minichat ORDER BY id DESC LIMIT 5 ";
$query_select= @mysql_query($sql_select) or die (mysql_error());while($row=mysql_fetch_array($query_select))
{
$row['testo'] = str_replace("grr","<img_src='/faccine3/smile_diavolo.gif'>",$row['testo']);$row['testo'] = str_replace(":*","<img_src='/faccine3/smile_bacio.gif'>",$row['testo']);
$row['testo'] = str_replace("@_@","<img_src='/faccine3/smile_arrabbiato.gif'>",$row['testo']);
//Funz<ione che imposta massimo 48 lettere per riga
$stringa=$row['testo'];
$nuova_stringa = wordwrap($stringa, 42, "<br />\n",true);
$nuova_stringa = str_replace("<img_src", "<img src", $nuova_stringa);
$nick=$row['id_user'];
$maiuscola=$row['id_user'];
$maiuscola=ucfirst($maiuscola);if($row['sessochat'] == 'femmina'){
$classenick="donna";
$colore="FF99FF";
}else{
$classenick="uomo";
$colore="0066FF";
}
echo"<BODY background="/modificaprofilo.jpeg">
<div id="minichatsito"><font color="#".$colore."" size ="3" face="Arial Bold"><b><a target="contenuto" href="profiloaltri.php?nickname=".$nick.""
class="".$classenick."" >".$maiuscola.": </font></a></b><font class="tempo" color="#000000"
face="Arial Bold" size="1">".$row['tempo']."</font><br><font class="testo" color="#000000" face="Arial Bold" size="2">".$nuova_stringa."</font></b></div><br>";}
?> [/PHP]E in questa ultima pagina che devo inserire il codice che te mi hai postato?
Nel tuo codice filecontesto.php sarebbe nel mio caso sempre quest ultima pagina..?
-
ho inserito il tuo script nella mia minichat2.php
cosi..
[php]
<html>
<head><link rel="stylesheet" type="text/css" href="stilechat.css" />
<script>
function Chat()
{
var xmlHttp;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Il tuo browser non supporta la chat!");
return false;
}
}
}
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
document.getElementById("minichatsito").innerHTML=xmlHttp.responseText;
setTimeout('Chat()', 3000); //tempo di refresh generale
}
}
xmlHttp.open("GET","/minichat2.php",true);
xmlHttp.send(null);
}
setTimeout('Chat()', 3000);
</script>
[/php]che sarebbe la pagina che mostra a video il contenuto..
Come mai appena apro il sito mi mostra il tutto normalmente mentre dopo 2 o 3 secondi dopo mi mostra subito sotto la pagina dei contenuti della chat una copia del contenuto di ciò che c'è scritto sopra..?
Poi quando invio il messaggio subito dopo mi mostra una copia del form pe rl invio dei messaggi..?
Cioè praticamente mostra a video 2 form per l invio dei messaggi e 2 contenuti uguali di ciò che si scrive nella chat...come mai?il sito e strutturato in frame..
[html]<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Prova con frame</title>
</head>
<frameset rows="23%,">
<frame name="intestazione" id="intestazione" frameborder="no" src="intestazione.php" scrolling="no" NOREsize>
<frameset cols="20%,"><frame name="menu" id="menu" frameborder="no" src="minichat2.php" NOREsize> <frame name="contenuto" frameborder="no" id="contenuto" src="contenuto.php"> </frameset>
</frameset>
<noframes> <p>Qui può essere indicato il link a<A href="senzaFrame.html"> una versione del sito</a> che non utilizzi un layout a frame</p> </noframes>
</frameset>
</html>[/html]Questo influisce?
-
Ciao,
Scusa il ritardo allora di come hai la cosa organizzata non ci ho capito molto, quindi ti faccio un esempio veloce dell'implementazione, che non dovresti avere problemi a comprendere, in caso chiedi ;).
miapagina.php
[php]
<html>
<head>
</head>
<body>
<!-- altro HTML -->
<div id="msg"></div>
<script>
function Chat()
{
var xmlHttp;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Il tuo browser non supporta la chat!");
return false;
}
}
}
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
document.getElementById("msg").innerHTML=xmlHttp.responseText;
setTimeout('Chat()', 3000); //tempo di refresh generale
}
}
xmlHttp.open("GET","/aggiorna.php",true);
xmlHttp.send(null);
}
setTimeout('Chat()', 3000);
</script>
<!-- Altro HTML-->
</body>
</html>
[/php]Nel file aggiorna.php metti i messaggi da mostrare, ogni 3 secondi verrà fatta una richiesta ad aggiorna.php prenderà l'output e verrà sostituito al contenuto del nostro div.
Il funzionamento come puoi ben vedere è facile facile.
-
continua a non funzionare...quando premo invia mi mostra il contenuto dei messaggi due volte..:bho:
-
funziona...:)
alcuen volte però si blocca...sto usando un hosting gratuito altervista per provare...e dovuto a quello sicuramente che non regge le connessioni..cosa m consigli di prendere per non avere problemi di bloccaggio della chat..?Ovviamente su costi contenuti...
-
Purtroppo non credo ci sia soluzione con costi contenuti.
Quanta gente dovresti avere li collegata nei momenti di picco?
-
credo una 50 ina...
-
Mi sa che non funziona..ho appena provato con un amico..lui scriveva ma nulla..i suoi messaggi li ho letti solo dopo che ho scritto io..e pure avevo provato dal mio pc tenendo le pagine della chat aperte su due finestre differenti del browser..e funzionava!Cioè se scrivevo in una finestra automaticamente nell altra mi mostrava il messaggio...
Dove cavolo sbaglio..?
-
Ciao,
Dovresti postare le pagine, altrimenti non saprei il motivo.
-
Ho risolto..:)
-
Bene
Magari posta la soluzione per chi come te sta cercando di fare la stessa cosa.
-
nulla di che..il problema era il mio di come avvevo strutturato la minchat...
avevo sia il form che la lettura dei messaggi nella stessa pagina...e quando la funziona in javascript mi richiamava la pagina da visualizzare mi succedeva che mentre scrivevo nel form passati 3 secondi cancellava il tutto...aggiornvava praticamente...quindi ho la pagina con la script in ajax che sta per conto suo,poi ho creato la sola pagina per la lettura dei messaggi che sarebbe quella che viene richiamata dalla pagina che ha al suo interno lo script ajax..e il form sta su un altra pagina per conto suo..che includo solo per chi è loggato..