IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Librairies] Problème chat avec ajax


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut [Librairies] Problème chat avec ajax
    Bonjour,

    J'ai un petit soucis. Je veux faire un chat avec php. Donc j'utilise la méthode ajax afin de rafraichir le div ou se situe la discussion. Mais parfois ça fonctionne, et parfois il ne rafraichi pas la page. Même en étant sur le même PC. Donc si quelqu'un pourrait me donner un coup de main en disant ou ça coince, ça serait très gentil.

    Merci d'avance

    Page de mon chat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    	<script type="text/javascript">
    	function mise_a_jour_affichage()
    	{
    		var xhr_object = null;
     
    		if(window.XMLHttpRequest) // Firefox   
    			xhr_object = new XMLHttpRequest();   
    		else if(window.ActiveXObject) // Internet Explorer   
    			xhr_object = new ActiveXObject("Microsoft.XMLHTTP");   
    		else 
    			{ // XMLHttpRequest non supporté par le navigateur   
    			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");   
    			return;   
    			}   
     
    		var donnee = null;   
     
    		xhr_object.open("GET", "ajax/mise_a_jour_affichage_chat.php", true);   
    		xhr_object.send(null);
    		xhr_object.onreadystatechange = function()
    		{   
    			if(xhr_object.readyState == 4)
    				{
    				document.getElementById("texte_chat").innerHTML = xhr_object.responseText
    				var position=document.getElementById('bas').offsetTop;
    				document.getElementById("texte_chat").scrollTop = position;
    				}   
    		}
    	}
     
    	function poster_message()
    	{
    		if (document.getElementById("nouveau_message").value != "")
    			{
    			var xhr_object = null;
     
    			if(window.XMLHttpRequest) // Firefox   
    				xhr_object = new XMLHttpRequest();   
    			else if(window.ActiveXObject) // Internet Explorer   
    				xhr_object = new ActiveXObject("Microsoft.XMLHTTP");   
    			else 
    				{ // XMLHttpRequest non supporté par le navigateur   
    				alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");   
    				return;   
    				}   
     
    			var donnee = null;   
     
    			xhr_object.open("GET", "ajax/poster_chat.php?texte_chat="+ document.getElementById("nouveau_message").value, true);   
    			xhr_object.send(null);
    			}
    	}
    	setInterval("mise_a_jour_affichage()", 3000);
    	</script>
    	<body OnLoad="javascript : mise_a_jour_affichage();">
    	<p class="titre_texte">Bienvenue sur le chat de Lilwen Sacrée</p>
    	<div id="texte_chat" style="width : 700px; height : 400px;; background-color : #E5E5E5; border : 1px solid #000000; text-align : left; overflow: auto; bottom : 0px;">
    	</div>
    	<br>
    	<p style="font-size : 12px; font-weight : bold; margin-bottom : 0px; margin-left : 37px;">Ecrivez votre message</p>
    	<br>
    	<textarea id="nouveau_message" style="border : 1px solid black; background-color : #E5E5E5; width : 700px; height : 70px;"></textarea><br>
    	<input type="submit" OnClick="javascript : poster_message();" value="Envoyer" class="bouton">
    Page de récupération de la discussion (mise_a_jour_affichage_chat.php):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <?
    include('../connexion.php');
     
    //supprime les messages de plus de 50 messages
    $requete_selection_nombre_total_message = "SELECT * FROM tbl_chat";
    $nombre_total_message = mysql_num_rows(mysql_query($requete_selection_nombre_total_message));
     
    if ($nombre_total_message > 50)
    	{
    	$requete_suppression_message = "DELETE FROM tbl_chat ORDER BY id_chat ASC LIMIT ". ($nombre_total_message - 50);
    	mysql_query($requete_suppression_message);
    	}
     
    $message = "";
     
    $requete_selection_chat = "SELECT * FROM tbl_chat, tbl_utilisateur WHERE tbl_chat.id_utilisateur = tbl_utilisateur.id_utilisateur ORDER BY date_chat ASC";
    $renvoi_selection_chat = mysql_query($requete_selection_chat);
     
    while($chat = mysql_fetch_array($renvoi_selection_chat))
    	{
    	$message .= '<p style="padding-bottom : 0px; padding-top : 0px;"><b>'. $chat['identifiant_utilisateur'] .'</b> ('. strftime("%d.%m.%Y à %H:%M", $chat['date_chat']) .') :<br>';
    	$message .= $chat['texte_chat'].'<br></p>';
    	}
    $message .= "<a id=\"bas\" name=\"bas\"> </a>";
    echo mb_convert_encoding($message, "UTF-8", "ISO-8859-1");
    ?>

  2. #2
    Membre chevronné
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 281
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 281
    Points : 1 999
    Points
    1 999
    Par défaut
    Le raffraîchissement se fait côté client. PHP n'a donc rien à voir avec le problème. Si tu utilises un navigateur comme Firefox, tu peux déjà regarder s'il y a qq chose qui clôche dans la console Javascript.

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Non, j'ai fait les tests sous IE. Alors peut tu me le transférer sur le forum javascript stp

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    ton code m'a l'air bon
    par contre, si je me trompe pas, tu demande un rafraichissement toute les 3s, je pense que c'est pas assez et que du coup, le serveur peut prendre du retard et t'envoyer plusieurs réponses tardives en meme temps
    En gros, tu appelle ta fonction, le javascript attend l'etat 4, 3s plus tard, tu relance la fonction, alors que le premier état 4 n'est pas encore arrivé.....
    Je crois qu'il existe un fonction pour tuer la requete ajax au bout d'un temps sans réponse, regarde de ce coté

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Ah ok, alors je vais regarder ça et je vous redis quoi comment.

    Si quelqu'un a une autre idée pendant ce temps, il ne faut pas hésiter;-)

    Allé, bon week end si jamais

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    ya une autre solution -pas trop genial je reconnais - c'est d'utiliser un iframe a la place de ton div. comme ça dans l'entete tu peux mettre une balise meta pour le rafraichissement. Je fais aussi un chat mais contrairement a toi je n'utilise pas Ajax.

Discussions similaires

  1. Réaliser un Chat avec support IP
    Par Sub0 dans le forum Développement
    Réponses: 12
    Dernier message: 14/07/2006, 10h59
  2. [AJAX] Un chat avec AJAX
    Par Death83 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/03/2006, 15h08
  3. [AJAX] upload fichiers avec AJAX
    Par jibouze dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/12/2005, 21h04
  4. Comment créer un chat avec VB 6 ?
    Par magic8392 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 21/10/2005, 15h37
  5. Le chat (avec les sockets) sans frames.
    Par azmeuk dans le forum Langage
    Réponses: 1
    Dernier message: 18/10/2005, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo