Ajax/Php rafraichissement automatique
Fermé
Mik3five
-
12 nov. 2012 à 22:34
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 - 14 nov. 2012 à 20:01
Atropa Messages postés 1940 Date d'inscription mercredi 25 juin 2008 Statut Membre Dernière intervention 11 mai 2014 - 14 nov. 2012 à 20:01
A voir également:
- Ajax/Php rafraichissement automatique
- Message automatique thunderbird - Guide
- Réponse automatique outlook - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Easy php - Télécharger - Divers Web & Internet
- Sommaire automatique word - Guide
3 réponses
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
13 nov. 2012 à 00:35
13 nov. 2012 à 00:35
bonsoir,
pour un chat il faut faire un serveur
et si tu le fais avec un xhr faire une fonction récursive
du genre :
et en php :
pour un chat il faut faire un serveur
et si tu le fais avec un xhr faire une fonction récursive
du genre :
function chatRefresh() { var Xhr = new XHR(); /* Requête */ Xhr.onreadystatechange = function(){ if (Xhr.status == 200 && Xhr.readyState == 4) { /* Mise a jour du cadre */ chatRefresh(); } }; }
et en php :
<?php /* vérification que la requête est légale */ while(true) { /* Test des nouveau message */ if(/*Nouveau message*/) { echo /* chaine */ break; } else sleep(1); } ?>
if(isset($_SESSION['pseudo']) && !empty($_SESSION['pseudo'])) { include_once($_SERVER['DOCUMENT_ROOT'].'/include/sql2.php'); while(true) { if(connect('chat')) { $selection='SELECT * FROM 'discussion' WHERE 'send'=0 AND 'nosend'=1 ORDER BY 'id' DESC LIMIT 30'; $requete=mysql_query($selection) or die('Erreur dans le fichier '.__FILE__.' à la ligne '.__LINE__.' '.mysql_error()); $resultat=mysql_num_rows($requete); writeReq($selection); writeReq($resultat); if($resultat>0) { $_SESSION['resultat']=$resultat; while($message=mysql_fetch_assoc($requete)) { $texte.=$message['id'].'->'.htmlspecialchars($message['pseudo']).':'; $texte.=htmlspecialchars($message['date']); $texte.=htmlspecialchars($message['texte']).'<br>'; } echo '----------------------------<br>'; echo $texte; break; } else { sleep(2); break; } } else { echo 'Erreur de connexion'; sleep(2); break; } } } else { echo '0'; }
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
13 nov. 2012 à 17:05
13 nov. 2012 à 17:05
c'est ton serveur au complet ça ?
si c'est le cas il ne vas pas du tout
inutile de faire un sleep suivit d'un break au contraire sleep s'utilise quand il n'y a pas de break
si c'est le cas il ne vas pas du tout
inutile de faire un sleep suivit d'un break au contraire sleep s'utilise quand il n'y a pas de break
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
Modifié par Atropa le 13/11/2012 à 17:16
Modifié par Atropa le 13/11/2012 à 17:16
<?php if(isset($_SESSION['pseudo']) && !empty($_SESSION['pseudo'])) exit('0'); include_once($_SERVER['DOCUMENT_ROOT'].'/include/sql2.php'); while(true) { if(!connect('chat')) exit('Erreur de connexion'); $selection='SELECT * FROM discussion WHERE send=0 AND nosend=1 ORDER BY id DESC LIMIT 30'; $requete=mysql_query($selection) or die('Erreur dans le fichier '.__FILE__.' à la ligne '.__LINE__.' '.mysql_error()); $resultat=mysql_num_rows($requete); /*writeReq($selection); writeReq($resultat);*/ if($resultat == 0) { usleep(50000); continue; } $_SESSION['resultat']=$resultat; while($message=mysql_fetch_assoc($requete)) { $texte .= $message['id'].'->'.htmlspecialchars($message['pseudo']).':'. htmlspecialchars($message['date']). htmlspecialchars($message['texte']).'<br>'; } break; } echo '----------------------------<br>'; echo $texte; ?>
Alors j'ai une question...
Comment faire la distinction entre nouveau message et ancien message?
Pck, bêtement, j'ai essayé ceci.
Chaque message envoyé sur le tchat, reçois l'attribut non lu.
Lorsque celui-ci est rapatrié via le refreshChat, le script php, met l'attribut non lu en lu.
Cependant, le message ne s'affiche quasiment jamais sur les autres navigateurs.
Et quand, dans mon script, qui récupère les message, je ne met pas de critère , je demande juste les 30 derniers messages... il me renvoie en boucle les 30 derniers messages......
Comment est ce que je peux faire, pour être sur et certains que chaque message s'affiche, et pas en boucle.
Comment faire la distinction entre nouveau message et ancien message?
Pck, bêtement, j'ai essayé ceci.
Chaque message envoyé sur le tchat, reçois l'attribut non lu.
Lorsque celui-ci est rapatrié via le refreshChat, le script php, met l'attribut non lu en lu.
Cependant, le message ne s'affiche quasiment jamais sur les autres navigateurs.
Et quand, dans mon script, qui récupère les message, je ne met pas de critère , je demande juste les 30 derniers messages... il me renvoie en boucle les 30 derniers messages......
Comment est ce que je peux faire, pour être sur et certains que chaque message s'affiche, et pas en boucle.
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
14 nov. 2012 à 20:01
14 nov. 2012 à 20:01
enregistre plutôt l'heure en micro secondes ou en milli secondes du dernier affichage