Page 1 sur 1

chargement fichier texte

Posté : 03 févr. 2007, 02:38
par fabien_14
bonjour, j'ai trouver un chat et j'aimerai qu'il se charge a l'ouverture de la page en effet on est obliger d'appyyer sur envoyer pour que les message s'apparaise !

c'est un chat en ajax.

Si vous pouvez me donner un coup de main, merci

Code : Tout sélectionner

<?php $username= "toto"; function post($username){ $heure = date("H:i:s"); $fp = fopen('data',"a+") or die ('Une erreur est survenue'); $new = "*[$heure] $username : vient de se connecter...<br/>"; fputs($fp,$new); fclose($fp) or die ('Erreur fermeture fichier'); } post($username); ?> <script type="text/javascript"> var nom = <? print $username ;?>; var xhr = null; function getXhr(){ if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } } function gestion(post,util){ getXhr() xhr.onreadystatechange = function(){ if(xhr.readyState==4 && xhr.status == 200){ eval(xhr.responseText); } } xhr.open("GET","post.php?n="+nom+"&post="+post+"&util="+util,true); xhr.send(null); } function tempo(){ setTimeout(rafraichir,3000); } function rafraichir(){ gestion("","0"); } function post(){ var mess = document.getElementById('post').value; if(mess!=='' && nom!=="") { gestion(mess,"1"); document.getElementById('post').value = ''; document.getElementById('post').focus(); } } </script> <link href="../images/style.css" rel="stylesheet" type="text/css"> <div id="shotbox" onKeyPress="if(event.which==13||event.keyCode==13) post()" > <div id="messages"> </div> <input name="post" size="80" id="post" align="absbottom" /> </div>
et voici le Post.php

Code : Tout sélectionner

<?php header('Content-type: text/html; charset=iso-8859-1'); $username="toto"; $util = $_GET['util']; $nick = $username; if(isset($_GET['post'])){ $post = htmlentities($_GET['post']); }else{$post=NULL;} $heure = date("H:i:s"); (isset($post)&&$util==1) ? post($post,$nick,$heure) : refresh(); function refresh(){ header('Content-type: text/html; charset=iso-8859-1'); $fp = fopen('data',"a+") or die ('Une erreur est survenue'); fseek($fp,0); while (!feof ($fp)){ // tant que pas en fin de fichier $lecture = fgets($fp); // stockage dans $lecture } $donnee=explode('*',$lecture); // parsing des données $combien=count($donnee); // nbre d'éléments $affiche = ''; $i=$combien-25; while($i!==$combien){ if($i>=0) $affiche .= $donnee[$i]; $i++; } fclose($fp) or die ('Une erreur est survenue'); echo 'document.getElementById("messages").innerHTML = "'.$affiche.'";'; echo 'tempo();'; } function post($post,$nick,$heure){ $fp = fopen('data',"a+") or die ('Une erreur est survenue'); $new = '*['.$heure.'] '.$nick.' : '.$post.'<br/>'; fputs($fp,$new); fclose($fp) or die ('Erreur fermeture fichier'); refresh(); } ?>

Posté : 03 févr. 2007, 02:51
par HD
pour cela tu dois "remplir" toutes les variables envoyées par le 1er fichier au 2eme et faire un include() du 2eme

Posté : 03 févr. 2007, 10:27
par fabien_14
bonjour,

Je viens de le faire, j'ai bien le fichier data qui se charge au chargement de la page mais dés que j'appuis sur entree pour le nouveau message j'ai le bloc des 25 message en double ...

Posté : 03 févr. 2007, 14:17
par HD
montre nous ton nouveau code :!:

Posté : 04 févr. 2007, 12:19
par fabien_14
J'ai rajouter ceci dans index.php afin de faire afficher le texte :

Code : Tout sélectionner

function refresh(){ header('Content-type: text/html; charset=iso-8859-1'); $fp = fopen('data',"a+") or die ('Une erreur est survenue'); fseek($fp,0); while (!feof ($fp)){ // tant que pas en fin de fichier $lecture = fgets($fp); // stockage dans $lecture } $donnee=explode('*',$lecture); // parsing des données $combien=count($donnee); // nbre d'éléments $affiche = ''; $i=$combien-25; while($i!==$combien){ if($i>=0) $affiche .= $donnee[$i]; $i++; } fclose($fp) or die ('Une erreur est survenue'); echo "$affiche"; } refresh();
Sa affiche bien mais dés que je clique sur envoyer un message sa me réaffiche encore une fois le bloc des message ...

Posté : 04 févr. 2007, 21:55
par fabien_14
En faite je pense qu'il s'affiche en double car je fai afficher le fichier data et lorsque lon clique sur envoyéer un message ... le script en ajax fai lui aussi apparaitre le fichier texte du chat ...

Comment faire affichier le chat sans etre obliger de cliquer sur la touche entrée ?

Posté : 05 févr. 2007, 21:10
par fabien_14
personne ?

Posté : 05 févr. 2007, 21:17
par Cyrano
Modération :
fabien_14, les "up" (même déguisés) 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.