Bonjour tout le monde,
Je suis entrain de faire un chat en php et ajax tout marche bien au niveau local mais quand je transfert le chat au niveau du serveur je constate des répétitions de message.
Explication: Quand Toto envoi un message à Bineta le message s'affiche trois fois chez Bineta et vice versa.
Voici mon code
Voir ci-dessous mon code PHP de la page //my_messages
Je suis entrain de faire un chat en php et ajax tout marche bien au niveau local mais quand je transfert le chat au niveau du serveur je constate des répétitions de message.
Explication: Quand Toto envoi un message à Bineta le message s'affiche trois fois chez Bineta et vice versa.
Voici mon code
<script type="text/Javascript">
/*Ma fonction qui actualise le chat*/
function ActualiseChat(){
var xhr4=new XMLHttpRequest();
var destinat=document.getElementById('from_mess').value;
var recept=document.getElementById('to_mess').value;
xhr4.open("GET", "scripts/my_messages.php?from_mess="+destinat+"&to_mess="+recept+"", true);
xhr4.onreadystatechange=function()
{
if(xhr4.readyState < 4 ){
document.getElementById('span_test2').style.display='block';
}
if(xhr4.readyState==4 && xhr4.status==200){
var div_rep2=document.createElement('div');
div_rep2.innerHTML=xhr4.responseText;
document.getElementById('span_post').appendChild(div_rep2);
var element = document.getElementById('mess_scrol');
element.scrollTop = element.scrollHeight;
document.getElementById('span_test2').style.display='none';
}
}
xhr4.send(null);
}
//--------------------Fonction de test de message-------------------------------
function TestMessage(){
var xhr6=new XMLHttpRequest();
var MonID=document.getElementById('from_mess').value;
var SonID=document.getElementById('to_mess').value;
xhr6.open("GET", "scripts/actualise_chat.php?from_mess="+MonID+"&to_mess="+SonID+"", true);
xhr6.onreadystatechange=function()
{
if(xhr6.readyState==4 && xhr6.status==200)
{
var ReponseTest=xhr6.responseText;
if(ReponseTest =='ok'){
ActualiseChat();
}
}
}
xhr6.send(null);
}
var timming=setInterval('TestMessage()',5000);
</script>
Voir ci-dessous mon code PHP de la page //my_messages
<?php
if((isset($_GET['from_mess']) && ($_GET['to_mess']) && (!empty($_GET['to_mess']))))
{
$mebre_id='Mon id moi meme';
mysql_select_db($database_chat, $chat);
$query_liste_mess=sprintf("SELECT * FROM chat WHERE (chat_to=%s AND chat_from=%s AND lu_non=%s) ORDER BY chat_date DESC LIMIT 0, 1",
GetSQLValueString($membre_id, 'int'),
GetSQLValueString($_GET['to_mess'], 'int'),
GetSQLValueString(0, 'int'));
$liste_mess=mysql_query($query_liste_mess, $chat) or die (mysql_error());
$row_liste_mess=mysql_fetch_assoc($liste_mess);
$total_rows_liste_mess=mysql_num_rows($liste_mess);
if($total_rows_liste_mess > 0){
$update_message=sprintf("UPDATE chat SET lu_non=1 WHERE (chat_from=%s AND chat_to=%s AND lu_non=0)",
GetSQLValueString($_GET['to_mess'], 'int'),
GetSQLValueString($_GET['from_mess'], 'int'));
mysql_select_db($database_chat, $chat);
$result=mysql_query($update_message, $chat) or die (mysql_error());
mysql_select_db($database_chat, $chat);
$query_correspondant = sprintf("SELECT * FROM `membre` WHERE `membre`.id_membre=%s", GetSQLValueString($row_liste_mess['chat_from'], "int"));
$correspondant = mysql_query($query_correspondant, $chat) or die(mysql_error());
$row_correspondant = mysql_fetch_assoc($correspondant);
$totalRows_correspondant = mysql_num_rows($correspondant);
$id_correspondant=$row_correspondant['id_membre'];
$lien="";
if($id_correspondant==$membre_id){
$lien="../profil/index.php";
}else{
$lien="../profil/profil.php?membre_ref=".$id_correspondant;
}
$nom_membre=$row_correspondant['nom_membre'].' '.$row_correspondant['prenom_membre'];
$image_membre="";
if(!empty($row_correspondant['avatar_petit'])){
$image_membre=$row_correspondant['avatar_petit'];
}else{
$image_membre="image/avatar_africa60.png";
}
$temps_add=new DateTime($row_liste_mess['chat_date']);
$temps_heure=$temps_add->format('H:i:s');
echo'<li class="liste_connectes" style="border-color:#F2F2F2; display:block; overflow:hidden; padding-bottom:5px; text-align:left; font-size:12px">
<table width="420" align="center">
<tr>
<td valign="top" width="40"><a href="'.$lien.'" target="_blank" title="'.$nom_membre.'"><img src="../'.$image_membre.'" width="35" hspace="5" align="left"/></a></td>
<td style="text-align:left" valign="top">
<span style="color:#CCC; text-align:right; float:right">'.$temps_heure.'</span>
'.make_clickable($row_liste_mess['chat_mess']).'</td>
</tr></table></li>';
}
}
//--------------Ceci est le code de ma page actualise_chat.php
if((isset($_GET['from_mess']) && ($_GET['to_mess']) && $_GET['to_mess']!=""))
{
$membre_id='Mon id moi meme';
mysql_select_db($database_chat, $chat);
$query_liste_mess=sprintf("SELECT * FROM chat WHERE (chat_from=%s AND chat_to=%s AND lu_non=%s) ORDER BY chat_date ASC LIMIT 0, 1000",
GetSQLValueString($_GET['to_mess'], 'int'),
GetSQLValueString($membre_id, 'int'),
GetSQLValueString(0, 'int'));
$liste_mess=mysql_query($query_liste_mess, $chat) or die (mysql_error());
$row_liste_mess=mysql_fetch_assoc($liste_mess);
$total_rows_liste_mess=mysql_num_rows($liste_mess);
}
if($total_rows_liste_mess > 0){
echo 'ok';
}
?>