En pièces jointes, tu trouveras les deux fichiers modifiés.
Dans le traitement PHP, j'ai fait deux essais d'affichages comme tu le verras.
Dans la page d'affichage, j'ai mis en dehors de la boucle while : echo '<input type="hidden" id="id_reponse" value="'.$id_reponse.'" />';.
Aucune différence, qu'est-ce qu'il faut changer ?
Je te rappelle l'objectif recherché :
Afficher cette alerte alert("une nouvelle réponse a été détectée, veuillez rafraichir la page !"); uniquement quand une réponse a été postée.
Quand il n'y a pas de nouvelle réponse, ce n'est pas la peine d'afficher l'alerte.
Actuellement, l'alerte s'affiche à chaque chargement de la page qu'il y ait ou non une nouvelle réponse dans la base de données c'est-à-dire à chaque ouverture de la page.
Actuellement, le champs hidden contient l'identifiant de la dernière réponse. En fait, il faut que ce champs hidden contienne le résultat de la requête SQL qui permet de compter les identifiants des réponses issus de la base de données pour pouvoir le comparer avec xhr.responseText. Si le nombre est le même alors on n'affiche pas l'alerte javascript par contre s'il est différent, oui.
Est-ce que le raisonnement est bon ?
Si c'est ça, le fichier du traitement PHP et donc la ligne xhr.open("POST", "fichier.php", true); ne servent plus.
Il faudrait :
-exécuter cette requête SQL :-mettre le résultat de la requête SQL dans <input type="hidden" id="id_reponse" value="'..'" />.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT count(id_reponse) FROM reponses r JOIN questions q ON q.id_question=r.id_question JOIN chapitres c ON (c.id_chapitre = q.id_chapitre AND c.id_cours='".$id_cours_tp."')
Comment afficher le résultat d'une requête SQL avec COUNT ?
-comparer l'identifiant qui est dans la zone de texte et xhr.responseText : si c'est le même alors pas d'affichage de l'alerte sinon oui.
Est-ce que je me rapproche ?
En pièce jointe, je te mets la deuxième version. Rien n'a changé ! Est-ce que tu peux m'aider à finir de régler ce problème STP ?
Partager