Ajax

Résolu/Fermé
absurdsystem Messages postés 117 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 28 août 2008 - 2 avril 2008 à 14:11
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 - 5 avril 2008 à 09:08
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

5 réponses

chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 30
2 avril 2008 à 19:20
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... :)
0
absurdsystem Messages postés 117 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 28 août 2008 50
2 avril 2008 à 22:49
ce que je veu dire c'est :

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)
0
Gihef Messages postés 5150 Date d'inscription mercredi 20 juillet 2005 Statut Contributeur Dernière intervention 20 février 2023 2 779
2 avril 2008 à 23:59
Bonjour,

Un exemple peut t'aider ?

 --
0
absurdsystem Messages postés 117 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 28 août 2008 50
3 avril 2008 à 12:19
voila ce que j'ai actuellement :

http://absurdsystem.free.fr/test/

vous cliquez sur commentaires et la apres un petit temps de chargement les commentaires apparaissent.



moi je voudrai que un premier commentaire apparaisse ensuite petit de chargement puis le deuxieme commentaire etc...
0
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 30
3 avril 2008 à 22:31
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


<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();
	
?>



0
absurdsystem Messages postés 117 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 28 août 2008 50
3 avril 2008 à 22:57
Merci l'idée est la !


je vais faire tout ça a ma sauce et je remettrai un message dès que ça fonctionne !

Thank you
0
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 30
3 avril 2008 à 23:03
Ok! Dis moi ce qui fonctionnait / fonctionnait pas, ça m'intéresse!

a+
0
absurdsystem Messages postés 117 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 28 août 2008 50
3 avril 2008 à 23:46
Re !

va voir la :

http://absurdsystem.free.fr/test2/

dit-moi ce que t'en pense, moi je trouve ça classe.


je reorganise un peu le code (parceque la c'est le bordel) et je poste tout ça demain

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 30
5 avril 2008 à 09:08
Et ben c'est nickel, ça marche!

C'est sympa la petite image animée "chargement"!

Bon et bien bon courage!

a+
0