Bonjour voila j'ai suivis le tutoriel chat/ajax de Grafikart et sur mon site en faite chaque fois que l'on actualise la page ou se trouve le chat, bah tout les messages bah se double ^^ et bah si des paumés les font beaucoup bah après la page fait 4km ^^, quelqu'un saurais faire pour éviter cela ?

7 réponses


tagcash
Auteur
Réponse acceptée

j'ai trouvé une autre moyen en fait javais ma page tchater.php qui affichais les message et dans tchatajax aussi et donc a l'actualisation il m'affichais ceux qui étais déjà sur la page elle meme et plus ceux du tchatajax.php et j'ai viré dans tchat.php donc maintenant a l'actualisation sa me ré-affiche tout de la base de donnée ...
je passe de

<div id="tchat">
        <p>Bonjour, bienvenue sur le Tchat !</p>
            <?php
                $sql = "SELECT * FROM tchat ORDER BY date DESC LIMIT 15 ";
                $req = mysql_query($sql) or die(mysql_error());
                $d = array();
                while($data = mysql_fetch_assoc($req)){
                    $d] = $data;
                }
                for($i=count($d)-1;$i>=0;$i--){
                ?>
                    <p><?php echo $d$i]'date']; ?><strong><?php echo $d$i]'pseudo']; ?></strong> : <?php echo htmlentities(utf8_decode($d$i]'message'])); ?></p>
                <?php
                }
            ?>
        </div>

à

<div id="tchat">
        <p>Bonjour, bienvenue sur le Tchat !</p>
            <?php
                $sql = "SELECT * FROM tchat ORDER BY date DESC LIMIT 15 ";
                $req = mysql_query($sql) or die(mysql_error());
                $d = array();
                while($data = mysql_fetch_assoc($req)){
                    $d] = $data;
                }
                for($i=count($d)-1;$i>=0;$i--){

                }
            ?>
        </div>

Bah, bah, bah, xD. Avant d'insérer le message dans ta base de données, vérifie que le message n'existe pas déjà. Tu vérifies juste si le message d'avant est pareil, sa devrait suffire.

Donc tu as résolu le problème ?

tagcash
Auteur

oups oui dsl

Bonjour,
Merci pour les tutos super intéressants. Voilà mon problème: j'ai suivi (et télécharger les codes en premium) le tuto 'tchat en php-mysql' et chez moi les messages ne se rafraichissent pas du tout. Excepté si je reload la page.
Quelques infos en plus: je ne tourne pas en localhost, mais sur un serveur demo en ligne avec mysql (où j'ai recréé la dB Tchat avec 2 tables messages et connected). La page index-pseudo fonctionne, la page tchat (avec les 15 derniers tchats) se chargent correctement,
quand j'ouvre d'autres fenetres et connectent d'autres participants: ceux-ci sont correctements affichés sur toutes les autres pages des autres participants automatiquement (et endéans les 10sec comme prévu par le cTimer).
Ma dB messages et connected s'incrémente correctement dans les 2 tables des users et messages ajoutés.
En gros, tout fonctionne correctement SAUF le rafraichissement des messages. Pour un 'tchat' en particulier... c'est moyen.

J'ai reloadé le code source. Rien à faire.
Tel quel: j'ai un message d'erreur:

Margaux ( Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /var/www/vhosts/miam.biz/httpdocs/2/5Ajax_PHP/5Tchat/tchat.php on line 44 2013-07-05 21:51:03) : alors?

Donc j'ai rajouté "date_default_timezone_set('Europe/Amsterdam');" dans le début du fichier tchat.php:
<?php
session_start();
if(!isset($_SESSION"pseudo"]) || empty($_SESSION"pseudo"])){
header("location:index.php");
}
include "connect.php";
date_default_timezone_set('Europe/Amsterdam');
?>
etc

Et là la page s'affiche correctement, pas d'erreur, j'ouvre firebug en reloadant les scripts: aucune erreur (j'aurais préféré en avoir une pour pouvoir la tracer). Et pourtant les messages ne se rafraichissent pas automatiquement (alors qu'en manuel -reload page- les derniers messages sont bien incorporés).

Quelqu'un a une idéee?
D'avance merci
Francois

NB: Est ce que le download source est updaté? Dans la video, j'ai l'impression qu'à un moment une ligne de code est rajoutée pour empecher que quelqu'un poste un message 'vide'. Et que dans la version source téléchargée cette ligne de code n'existe pas (et donc les messages vides sont postés).

Bonjour, si les messages sont bien stocké en base de données, c'est peut être coté js, tu as un lien pour qu'on puisse regarder le tchat tourné en ligne ?

Bonjour Antho07,
Merci pour ta réponse. Après 3 heures de recherches hier (tourner en ronds...), j'ai finalement trouvé la source du problème:
je devais AUSSI rajouter la même ligne de référence 'temps -time- date' dans le header du fichier correspondant au js: 'TchatAJAX.php' dans ce cas (puisqu'ils travaillent ensemble, je me suis dit d'aller approfondir de ce côté là... bonne intuition).
Après avoir aussi rajouté : 'date_default_timezone_set('Europe/Amsterdam');' dans le fichier TchatAJAX.php, immédiatement tout était en ordre.
Encore merci Antho07 et bon dimanche ensoleillé! ;):)