Probléme avec ajax svp [Résolu/Fermé]

Signaler
Messages postés
63
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
26 mars 2012
-
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
-
Bonjour,






J'ai créé un script de chat avec ajax et php(sans base de donnée , les messages sont stocké dans un fichier text avec php puis affiché)...
bref : mon script est la

*mettre votre message puis en clique sur change content "pas entré du clavier ca marche pas"

http://marwen.lockernerd.co.uk/


et le code :

index.html  
////////////////////////////////////////////  
<html>  
<head>  
<style>  
.button{background-color:black;border:2px orange;color:orange;height:25px;}  
.input{border:1px black solid;height:25px;}  
</style>  


<script type="text/javascript">  

function declanche(msg)  
{  

if(window.XMLHttpRequest)  
{// code for IE7+, Firefox, Chrome, Opera, Safari  
req=new XMLHttpRequest();  
}  
else  
{// code for IE6, IE5  
req=new ActiveXObject("Microsoft.XMLHTTP");  
}  


req.onreadystatechange=function()  
{  

   
  if (req.readyState == 4) {  
   if (req.status == 200) {   
   document.getElementById("myDiv1").innerHTML="";  
     
   document.getElementById("myDiv").innerHTML=document.getElementById("myDiv").innerHTML+req.responseText;}  
   else { alert("erreur par marwen");}  
                         }  
          else  
        document.getElementById("myDiv1").innerHTML="<font color='red'size='5'>en attente....</font>";  


}  

req.open("GET","fiche.php?msg="+msg,true);  
req.send();  
}  
</script>  
</head>  
<body>  
<form name="f">  
<input type="text"name="msg">  
<button type="button" onclick="declanche(msg.value)"class="button">Change Content</button><br>  
<div id="myDiv"><h2></h2></div>  
<div id="myDiv1"><h2></h2></div>  
</form>  
</body>  
</html>   


/////////////////////////////////////  
fiche.php  


<?  
//ouverture du fichier avec ajout a la fin  
$x=fopen("chateur.txt","a+");  

//récupération du message passé a travert ajax   
$msg=$_GET['msg'];  

//faire un retour a la ligne pour pouvoir lire chaque ligne   
$msg="\n".$msg;  

fwrite($x,$msg);  



$ligne=file("chateur.txt");  

//affichage le dernière ligne(message reçu)  
echo $ligne[count($ligne)-1]."</br>";  

//et fermuture du fichier  
fclose($x);  
?>



et enfin un fichier chateur.txt initialement vide


mon probléme est que mon script poste des messages seulement localement sur mon pc,
je veux savoir pourquoi les message que j'ai posté ne sont pas transmis vers les autres internautes qui sont connecté a mon site web , et comment corrigé ca?

MERCI D'AVANCE :)

3 réponses

Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
184
Bonjour,

oulah y'a beaucoup de choses qui vont de travers. Bon. On va essayer de faire marcher ce que tu demandes d'abord, et après on verra pour les détails :)

Alors on a entre les mains :
- une page HTML qui envoie des messages en Ajax
- un script PHP qui enregistre et renvoie le message.

Le mot important là-dedans c'est « renvoie » : le serveur répond à une requête, et seulement celle-là (c'est le principe de base du Web). En l'occurence, il répond à la requête Ajax qui vient d'envoyer le message.

Il te manque la moitié des choses pour avoir une application de chat complète : tu n'as que la partie émission, il faut faire la partie réception.

La solution la plus facile à mettre en oeuvre, qu'on retrouve assez souvent sur les divers tutoriels, c'est d'avoir un second requêteur Ajax qui interroge le serveur régulièrement (toutes les 2 ou 3 secondes). Je te conseille de faire également un second script PHP pour bien différencier les choses.

Je ne vais pas te faire un tutoriel, il y en a des tas sur le Net. J'aimerais déjà savoir si tu peux t'en sortir avec les infos que je viens de te donner. Sinon, reviens me poser tes questions et j'y répondrai volontiers ;)
Messages postés
63
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
26 mars 2012
2
Tout d'abord, Merci beaucoup pour votre réponse :). Je savais qu'il manquait quelque chose comme ceci("interroger le serveur réguliérement....").

Renouvelle mes remerciements à vous. je vais trouver une solution à ce problème moi seul
Ne t'inquiète pas pour moi :=)
Messages postés
63
Date d'inscription
jeudi 12 août 2010
Statut
Membre
Dernière intervention
26 mars 2012
2
bonjour , voila j'ai trouvé ton indication "interroger le serveur réguliérement." c'est du simple javascript.
<< setInterval("declanche('')",3000) >>
pour déclencher mon requette ajax réguliérement.........
mon script marche correctement aujourd'hui , j'ai modifier la page "fiche.php"
mais le fichier partagé "chateur.txt"
va t'il provoqué une section critique ,imagine que les deux processes (les deux chateurs) accède en meme temp en écriture..... est-ce-qu'on peut utilisé du sémaphore dans ce cas la ?

je ponce que l'utilisation du base de donné est mieux q'un fichier texte],
en tous cas

Merci pour vous :=)
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
184
Salut,
Le serveur gère le parallélisme à ta place, tu n'as pas à t'en soucier.