Ajax
Résolu
absurdsystem
Messages postés
118
Date d'inscription
Statut
Membre
Dernière intervention
-
chantaussel Messages postés 137 Date d'inscription Statut Membre Dernière intervention -
chantaussel Messages postés 137 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis en train de développer un petit système de commentaire et j'ai un petit souci.
J'affiche le nb de commentaires du style : 46 commentaires.
Et quand on clic dessus une requête ajax s'exécute et m'affiche tout les commentaires.
Jusqu'ici pas de souci.
Ce que je voudrai faire c'est que les commentaires soient affichés un par un et pas tous d'un coup.
Mais je vois pas comment faire.
Si quelqu'un aune idée...
Merci
je suis en train de développer un petit système de commentaire et j'ai un petit souci.
J'affiche le nb de commentaires du style : 46 commentaires.
Et quand on clic dessus une requête ajax s'exécute et m'affiche tout les commentaires.
Jusqu'ici pas de souci.
Ce que je voudrai faire c'est que les commentaires soient affichés un par un et pas tous d'un coup.
Mais je vois pas comment faire.
Si quelqu'un aune idée...
Merci
5 réponses
Que veux-tu dire par "un par un"?
- un s'affiche, petite pause, puis le suivant apparait?
- un s'affiche, puis nouveau clic sur un lien / bouton, et le suivant apparait?
- veux-tu que lorsque le suivant s'affiche il remplace l'ancien?
- où veux tu que le suivant s'affiche en dessous de l'ancien?
Visualise bien précisément ce que tu veux faire, tu verras que la solution sera alors évidente (enfin le plus souvent... :)
- un s'affiche, petite pause, puis le suivant apparait?
- un s'affiche, puis nouveau clic sur un lien / bouton, et le suivant apparait?
- veux-tu que lorsque le suivant s'affiche il remplace l'ancien?
- où veux tu que le suivant s'affiche en dessous de l'ancien?
Visualise bien précisément ce que tu veux faire, tu verras que la solution sera alors évidente (enfin le plus souvent... :)
Bonjour,
Un exemple peut t'aider ?
--
Un exemple peut t'aider ?
--
Bon ce que je fais n'est pas du tout en accord avec les principes de Gihef ;), mais bon tant pis, ça m'entraîne et si en plus ça peut rendre service alors tant mieux!
Voilà ce que j'ai pu faire, c'est surement assez laborieux et vu que mes scripts ne marchent jamais du premier coup (c'est le moins qu'on puisse dire!), et que j'ai encore pas réussi à coder une requête AJAX qui fonctionne :o, il y aura surement beaucoup de débuggage à faire ... alors, au boulot!
comments.html
requete_sql_commentaire.php
Voilà ce que j'ai pu faire, c'est surement assez laborieux et vu que mes scripts ne marchent jamais du premier coup (c'est le moins qu'on puisse dire!), et que j'ai encore pas réussi à coder une requête AJAX qui fonctionne :o, il y aura surement beaucoup de débuggage à faire ... alors, au boulot!
comments.html
<html> <head> <title>News System</title> <link rel="stylesheet" type="text/css" href="system.css" /> <script type="text/javascript" language="javascript"> function getHTTPObject() { var xmlhttp = false; /* Compilation conditionnelle d'IE */ /*@cc_on @if (@_jscript_version >= 5) try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } @else xmlhttp = false; @end @*/ /* on essaie de créer l'objet si ce n'est pas déjà fait */ if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } if (xmlhttp) { /* on définit ce qui doit se passer quand la page répondra */ xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState == 4) /* 4 : état "complete" */ { if (xmlhttp.status == 200) /* 200 : code HTTP pour OK */ { /* stocke dans une variable le texte des commentaires déjà affichés, puis y rajoute le texte du commentaire suivant, et enfin affiche le tout dans la div 'comments' */ commentaire_deja_affiche = document.getElementById('comments').innerHTML; document.getElementById('comments').innerHTML = commentaire_deja_affiche + xmlhttp.responseText + "<br /><br />"; } } } } return xmlhttp; } function newcomment(i, j) { var xmlhttp = getHTTPObject(); xmlhttp.open('GET','requete_sql_commentaire.php?i='+i,true); xmlhttp.send(null); i++; /* et on recommence, après une pause de 3 secondes, si on est pas arrivé au bout (i<=j) */ if (i<=j) { setTimeout('newcomment()', 3000); } else { alert("Et c'est fini, ya plus de commentaires!"); } } function seecomments() { /* Je sais pas du tout si j'ai le droit de faire ce qui suit.... je pense que ça "court-circuite" un peu AJAX... ... mais bon, je le fais quand même! -- c'est pour obtenir le nombre total de commentaires sans repasser par AJAX */ var j = <?php mysql_connect("localhost", "identifiant", "pass"); mysql_select_db("ma_bdd"); $reponse = mysql_query("SELECT COUNT(*) AS nbre_commentaires FROM nom_de_ta_table"); $donnees = mysql_fetch_array($reponse); echo $donnees['nbre_commentaires']; ?> newcomment(1, j); } </script> </head> <body> <a href="JavaScript:seecomments()">Afficher les commentaires un par un</a> <br /> <div id='comments'> </div> </body> </html>
requete_sql_commentaire.php
<?php $i = $_GET['i']; mysql_connect("localhost", "identifiant", "pass"); mysql_select_db("ma_bdd"); $reponse = mysql_query("SELECT * FROM table_commentaires WHERE id='$i'"); $donnees = mysql_fetch_array($reponse); echo $donnees['contenu_commentaire']; mysql_close(); ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
un s'affiche, petite pause, puis suivant ( qui s'affiche en dessous du precedent)
Actuellement je clic ( j'ai mit un setTimeout pour faire style que ça charge) puis tous les commentaires présents dans la table apparaissent d'un coup.
Moi j'aimerais qu'ils apparaissent un à un.
(ça ne me sert a rien mais je trouve ça mieux visuellement)