chargement fichier texte

Eléphant du PHP | 183 Messages

03 févr. 2007, 02:38

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(); } ?>
_________
Fabien

HD
Mammouth du PHP | 1181 Messages

03 févr. 2007, 02:51

pour cela tu dois "remplir" toutes les variables envoyées par le 1er fichier au 2eme et faire un include() du 2eme
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphant du PHP | 183 Messages

03 févr. 2007, 10:27

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 ...
_________
Fabien

HD
Mammouth du PHP | 1181 Messages

03 févr. 2007, 14:17

montre nous ton nouveau code :!:
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphant du PHP | 183 Messages

04 févr. 2007, 12:19

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 ...
_________
Fabien

Eléphant du PHP | 183 Messages

04 févr. 2007, 21:55

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 ?
_________
Fabien

Eléphant du PHP | 183 Messages

05 févr. 2007, 21:10

personne ?
_________
Fabien

Mammouth du PHP | 19672 Messages

05 févr. 2007, 21:17

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: