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

jQuery Discussion :

Rafraîchir une <div> avec du contenu provenant d'une base de données [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Par défaut Rafraîchir une <div> avec du contenu provenant d'une base de données
    Bonjour à tous,

    Je développe en ce moment, dans le cadre d'un projet d'études, un site de "speed dating". Je n'ai pas encore réellement de notions d'AJAX (je vois venir AJAX est ton ami ) et voici ce que j'aimerais faire :

    Je voudrais rafraîchir une <div> contenant les messages du tchat toute les 5 secondes. Je veux rafraîchir uniquement cette <div> pour ne pas gêner l'utilisateur lorsqu'il entre un texte dans le champs pour le poster.

    Les messages sont postés par la méthode POST et affichés avec un SELECT.
    J'aimerais éviter l'AJAX pour cette partie-là (histoire de bien comprendre ce que je fais). Cette partie fonctionne (sans rafraîchissement).

    Voici ce que j'ai trouvé pour l'instant :
    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
    function rafraichir_tchat(){ 
    	adresse="tchat.php";
    	//appeler le script ajax pour charger le contenu de la page
    	$.ajax({ 
    		type: "GET", 
    		url: adresse, 
    		dataType : "html", 
    		//traitement de l'erreur en cas de problème 
    		error:function(msg, string){ 
    			//afficher l'erreur de chargement
    		}, 
    		success:function(data){ 
    			document.getElementById('tchatmsg').innerHTML = "le résultat de la requête";				
    			//on affecte les resultats au div 	
    			$('tchatmsg').append(data);
    			$('tchatmsg').fadeIn(3000);
    		}
    	}); 
    	setTimeout("rafraichir_tchat()", 5000);
    }
    Le résultat actuel :

    J'obtiens un affichage correcte de tous les messages lorsque je poste un nouveau message. Mais lors du rafraîchissement de la div, le code est remplacé par le texte "le résultat de la requête".

    Ce qui est normal ^^. Mais comment faire pour le remplacer par le résultat d'une requête ?

    Voici le contenu de la <div> que je souhaite rafraîchir :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <div id="tchatmsg">
    <?php
    	//Affichage des messages du tchat
    	$requeteMsg = mysql_query("SELECT message.messageMsg, membre.pseudoMbr FROM message INNER JOIN membre ON message.idMbr_FK = membre.idMbr WHERE idConv_FK='$idConv' ORDER BY message.idMsg DESC LIMIT 0,12") OR die("Erreur de la requête MySQL");
    	while($resultatMsg = mysql_fetch_array($requeteMsg, MYSQL_ASSOC))
    	{	
    		echo "<b>".htmlspecialchars($resultatMsg['pseudoMbr'])."</b> : " .htmlspecialchars($resultatMsg['messageMsg'])."<br>";
    	}
    ?>
    </div>

    Merci d'avance ça m’enlèverait une bonne grosse épine dans le pied

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Par défaut
    Je suis pas expert mais essaie de remplacer ton success par celui-ci, sait-on jamais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    success:function(msg){ 
    	document.getElementById('tchatmsg').innerHTML = msg.d;
    	$('tchatmsg').fadeIn(3000);
    }

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Attention aux sélecteurs jQuery !
    recherche les balises <tchatmsg>, je doute qu'il y en ai dans ton HTML !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Par défaut La solution
    J'ai résolu mon problème ! Y'avait le coup de la balise (merci Bovino) et y'avait aussi stupidement la page qui était chargée.

    Je rechargeais la page dans laquelle je me trouvais dans la div et il fallait seulement recharger une page contenant la requête...

    Merci pour vos réponses ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/10/2013, 11h17
  2. Réponses: 8
    Dernier message: 06/01/2012, 02h53
  3. [DOM] Comment supprimer une balise <div> en conservant le contenu ?
    Par Doc_xhtml dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 25/10/2011, 00h05
  4. Réponses: 0
    Dernier message: 13/06/2010, 22h44
  5. Initialiser une zone de texte avec le contenu d'un tableau
    Par Clotilde dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 07/10/2009, 13h16

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