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

JavaScript Discussion :

[AJAX] Remplacer une chaîne par une image (problème rafraîchissement ajax !)


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Points : 46
    Points
    46
    Par défaut [AJAX] Remplacer une chaîne par une image (problème rafraîchissement ajax !)
    Bonsoir !
    J'ai un petit soucis ..
    En fait, j'ai mon tchat, que je rafraîchis toutes les x secondes en ajax.
    Le problème, c'est qu'au lieu de m'afficher les smileys, il m'affiche le code correspond aux smileys

    Exemple ( :1: > ) :
    Avec ajax il va m'afficher ça :1:
    Mais sans l'ajax, il va m'afficher ça

    Quand je vire le rafraîssement ajax, j'ai bien l'affichage de mes smileys.
    Si quelqu'un pouvait m'aider ... ça serait sympa, car je vois le problème, en fait mon object xhr récupère les informations en texte, donc lors de l'affichage, il m'affiche le code, et non le smiley, mais j'ai pas réussi à trouver une solution

    Je vous met le code.

    ajax.js
    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
     
    function get_Xhr()
    {
    	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
       		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
     
       	return xhr_object;
    }
     
    function refresh_div()
    {
    	var xhr_object = get_Xhr();
    	xhr_object.open("GET", "messagetchat.php", true);
    	xhr_object.onreadystatechange = function()
    		{
    			if(xhr_object.readyState == 4)
    			{
    				document.getElementById('tchat').innerHTML = xhr_object.responseText;
    			}
    		}
    	xhr_object.send(null);
     
    	setTimeout('refresh_div()', 5000);
    }
    messagetchat.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
    28
    29
    30
    31
    32
    33
    34
     
    <?php
    include 'bdd/parametres.php';
     
    $requete = "SELECT * FROM msgtchat Order by idmsg Desc";
    $resultat = mysql_query($requete)
            OR die ('Erreur sur la requête');
     
    while ($curseur = mysql_fetch_array($resultat))
    {
            $idmembre = $curseur['idmembre'];
            $msg = $curseur['msg'];
            $time = $curseur['time'];
            $date = $curseur['date'];
            $heure = $curseur['heure'];
     
            for ($i=1; $i<=$_SESSION['nbsmiley']; $i++)
            {
                            $msg = str_replace(":$i:","<img src='smileys/$i.gif' alt='' />", $msg);
            }
            
            $requete2 = "SELECT login, sexe FROM membres WHERE idmembre ='$idmembre' ";
            $resultat2 = mysql_query($requete2)
                    OR die('Erreur SQL');
            $lecture2 = mysql_fetch_array($resultat2);
            $login = $lecture2['login'];
            $sexe = $lecture2['sexe'];
            ?>
    	<font color="<?php if($sexe == 'F') { echo "#ff229e"; } else { echo "#4c22ff"; } ?>"><b><?php echo $login; ?></b></font> <b>:</b> <?php echo $msg; ?>
     
    	<br />
    <?php
    }
    ?>

    EDIT : Je viens de remarquer un truc qui fonctionne, mais bon ... si j'ai 100 smileys ... ça va faire 100 lignes de code

    Quand je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $msg = str_replace(":1:","<img src='smileys/1.gif' alt='' />", $msg);
    A la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $msg = str_replace(":$i:","<img src='smileys/$i.gif' alt='' />", $msg);
    ça fonctionne, mon smiley est bien affiché ... mais bon, comment puis-je fairep our que ça fonctionne quand je met une variable à la place du nombre ? pour pouvoir mettre ça dans une boucle pour ..

  2. #2
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Tu peux nous faire un mini-trace ?
    Si j'ai bien compris tu veux faire dynamiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $msg = str_replace(":$1:","<img src='smileys/1.gif' alt='' />", $msg);
    avec $i qui s'incrémente sauf que ton $1 s'incrémente pas.
    Tes smileys sont nommés 1.gif, 2.gif, puis 3.gif .... ?

    C'est ta boucle qui fonctionne pas ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par d-Rek
    Tu peux nous faire un mini-trace ?
    Si j'ai bien compris tu veux faire dynamiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $msg = str_replace(":$1:","<img src='smileys/1.gif' alt='' />", $msg);
    avec $i qui s'incrémente sauf que ton $1 s'incrémente pas.
    Tes smileys sont nommés 1.gif, 2.gif, puis 3.gif .... ?

    C'est ta boucle qui fonctionne pas ?
    J'ai 28 smileys, donc je fais une boucle "for" de $i = 1 à $i = 28
    $msg = str_replace(":$i:","<img src='smileys/$i.gif' alt='' />", $msg);

    Et en fait, $i c'est le numéro du smiley, donc quand la personne tape :
    > :1: ça lui affiche le smiley 1.gif
    > :2: ça lui affiche le smiley 2.gif

    Et le soucis avec ajax pour la rafraîchissement, c'est qu'il m'affiche par exemple pour le smiley 1 > :1: (il m'affiche le code correspond et non le smiley)

    Par contre, quand je retire ma boucle "for" et que je remplace la variable $i par le numéro du smiley, bah ça marche impeccable.. mais bon, ça me fait 28 lignes de code -_- au lieu de 2 avec la boucle "for" lol

    Donc par exemple dans mon code quand je met :

    $msg = str_replace(":1:","<img src='smileys/1.gif' alt='' />", $msg);
    etc..

    Bah si la personne tape :1: là ça lui affiche bien le smiley

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/03/2011, 12h16
  2. [regexp] Remplacer une chaîne par une chaîne aléatoire
    Par endreillie dans le forum Langage
    Réponses: 9
    Dernier message: 28/10/2010, 12h15
  3. Remplacer une chaîne par une autre plus petite
    Par qqoos dans le forum Cobol
    Réponses: 6
    Dernier message: 08/05/2009, 18h24
  4. Action : remplacer la fonction par une chaîne
    Par 84mickael dans le forum JSF
    Réponses: 2
    Dernier message: 06/02/2009, 03h42
  5. Réponses: 1
    Dernier message: 06/08/2007, 14h20

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