Rafraichissment div

haco28
Invité n'ayant pas de compte PHPfrance

12 sept. 2007, 11:11

Bonjour a tous!
je sais peut etre que la question a été posée mais ca fait longtime que je cherche une solution a mon problme et j'ai plus la force de chercher.

voila je veux creer un systeme de chat en php javascipt mysql

l'enregistrement se fait bien mais le rafraichissment de ma div ne se fait pas.

comment faire (avc je crois setInterval()) ?
voici mon code

"test.php"

Code : Tout sélectionner

<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title></title> <script type="text/javascript"> function writediv(texte) { document.getElementById('messagebox').innerHTML = texte; } function verifMessage(message){ if(message.length<0){ alert('taper un messge !'); }else if(texte = file('test_.php?message='+escape(message))){ writediv(texte); } } function file(fichier) { if(window.XMLHttpRequest) // FIREFOX xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) // IE xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else return(false); xhr_object.open("GET", fichier, false); xhr_object.send(null); if(xhr_object.readyState == 4) return(xhr_object.responseText); else return(false); } </script> </head> <body> <form action=""> <input type="text" name="message"/> <input type="button" value="Go!" onClick="verifMessage(message.value)" /> <div id="messagebox"></div> </form> </body> </html>
et "test_.php"

Code : Tout sélectionner

<? // CONNECION SQL require('mysql_connect.php'); if(isset($_GET['message'])){ $req="insert into HASH_chat_message values('".$_GET['message']."');"; mysql_query($req); } $req="select * from HASH_chat_message;"; $result = mysql_query($req); $ligne = mysql_fetch_array($result,MYSQL_NUM); echo $ligne[0].'<br />'; while($ligne = mysql_fetch_array($result,MYSQL_NUM)){ echo $ligne[0].'<br />'; } mysql_close(); ?>
Merci et ce forum est super bien !

haco28
Invité n'ayant pas de compte PHPfrance

12 sept. 2007, 11:16

en fait je veux que la div se rafraichisse toute seul pour tous les gens qui voient la page.
et cela toutes les (5sec par exemple)

Invité
Invité n'ayant pas de compte PHPfrance

12 sept. 2007, 12:21

:priere: aidez-moi ! :cry:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 sept. 2007, 12:25

Modération :
haco28, les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 48 Messages

12 sept. 2007, 12:57

regardes la function setTimeout() je l'utilise pour les chats tu auras tout sur ce lien :

http://www.toutjavascript.com/reference ... hp?iref=13 :wink:
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !
A.Einstein

haco28
Invité n'ayant pas de compte PHPfrance

12 sept. 2007, 13:27

merci je vais voir ca :)

haco28
Invité n'ayant pas de compte PHPfrance

12 sept. 2007, 15:27

a présent j'ai changé mon code :

"test.php"

Code : Tout sélectionner

<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <title></title> <script> var texte = ''; /*******************envoie des messages*******************/ function envoieMessage(){ if(document.getElementById("message").value.length > 0){ //envoie du message texte = document.getElementById("message").value; }else{ //user na entre aucun message alert("Impossible d'envoyer le message"); } a = new Image; a.src="test_.php?message="+texte; } /*******************Lecture de la base de donnee*******************/ function lireBaseDeDonnee(){ fichier = "test_.php"; nav = navigator.appName.substring(0,3); if(nav=="Mic"){//Microsoft IE objXml = new ActiveXObject("Microsoft.XMLHTTP"); var datafile = fichier; objXml.open("GET",datafile,true); objXml.onreadystatechange = function(){ if(objXml.readyState==4){ texte=(objXml.responseText); } } objXml.send(null); }else{//Firefox objXml = new XMLHttpRequest(); objXml.open("GET",fichier,false); objXml.send(null); return(objXml.responseText); } } /*******************afficher les messages*******************/ function afficherChat(){ lireBaseDeDonnee(); document.getElementById("messagebox").innerHTML=texte; } setInterval("afficherChat()", 1000)//rafraicshissement toutes les 1 sec </script> </head> <body onLoad="afficherChat()"> <form action=""> <input type="text" name="message"/> <input type="button" value="Go!" onClick="lireBaseDeDonnee();envoieMessage();afficherChat()" /> <div id="messagebox"></div> </form> </body> </html>
et test_.php

Code : Tout sélectionner

<? // CONNECTION SQL require('mysql_connect.php'); if(isset($_GET['message'])){ $req="insert into HASH_chat_message values('".$_GET['message']."');"; mysql_query($req); } $req="select * from HASH_chat_message;"; $result = mysql_query($req); $ligne = mysql_fetch_array($result,MYSQL_NUM); echo $ligne[0].'<br />'; while($ligne = mysql_fetch_array($result,MYSQL_NUM)){ echo $ligne[0].'<br />'; } mysql_close(); ?>
voila mon probleme :
- sous internet explorer
-pas d'erreur de javascript
-les messages presens dans la base sont affichés
-lors de l'envoie d'un message , le message s'enregistre mais la page ne s'actualise pas :(
- sous firefox :
- erreur JAVASCRIPT dans la console :

Code : Tout sélectionner

Erreur : document.getElementById("message") has no properties Fichier source : http://haco28.free.fr/test.php Ligne : 37
Quelq'un peux m'aider pour la compatibilité des navigateur et le rafraichissement de la div ?
merci a tous.

haco
Invité n'ayant pas de compte PHPfrance

12 sept. 2007, 19:48

apres tant de recherche j'ai enfin trouvé la solution a mon travail.
POST RESOLU. :wink:

ViPHP
AB
ViPHP | 5818 Messages

12 sept. 2007, 20:33

Cela n'a rien à voir avec ton pb initial mais j'ai parcouru ton code et d'après ce que j'ai lu ta façon d'insérer les messages n'est pas très sécurisée (à priori). Pourquoi ne pas utiliser mysql_real_escape_string()

haco28
Invité n'ayant pas de compte PHPfrance

13 sept. 2007, 10:48

Oui peut etre mais j'ai pas compris l'utilisation de mysql_real_escape_string()
tu pe m'en dire plus ? Merci :D

Invité
Invité n'ayant pas de compte PHPfrance

13 sept. 2007, 17:35

gogo google.. ou tuto ! :?

haco28
Invité n'ayant pas de compte PHPfrance

15 sept. 2007, 20:32

je sais kil fo chercher mdr
mais si les gens peuvent prendre le temps d'expliquer jsuis d'accord et c'est pas de refus !
et puis si ils disent "go google","google est ton ami", etc eh ben je le sais aussi et puis ca sert a rien
de le dire :evil: :tir2:
et c'est un forum et pour moi un forum c'est pour DISCUTER :langue: !
voila sur ceux bye ! :merci:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 sept. 2007, 13:13

voila sur ceux bye !
sur "ceux" qui ? 8-|

Discutons :
Description
string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier] )

mysql_real_escape_string() protège les caractères spéciaux de la chaîne unescaped_string, en prenant en compte le jeu de caractères courant de la connexion link_identifier. Le résultat peut être utilisé sans problème avec la fonction mysql_query(). Si des données binaires doivent être insérées, cette fonction doit être utilisée.

mysql_real_escape_string() appelle la fonction mysql_escape_string() de la bibliothèque MySQL qui ajoute un slashe aux caractères suivants : NULL, \x00, \n, \r, \, ', " et \x1a.

Cette fonction doit toujours (avec quelques exceptions) être utilisée pour protéger vos données avant d'envoyer la requête à MySQL.
Donc c'est bien :)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute