Un systeme de "réponse" aux commentaires

Petit nouveau ! | 2 Messages

28 mai 2012, 15:35

Bonjour à tous,

J'ai deux requetes SQL différentes:

Code : Tout sélectionner

SELECT * FROM commentaires WHERE commentaires.id_articles='.$id_article_get.' AND commentaires.id_reponse=0 ORDER BY commentaires.id DESC
- L'une vérifie que le champs id_reponse soit égale à 0 si telle est le cas, c'est considéré comme un commentaire standard (non une réponse).

Code : Tout sélectionner

SELECT * FROM commentaires WHERE commentaires.id_articles='.$id_article_get.' AND commentaires.id_reponse='.$data['id'].' ORDER BY commentaires.id
- L'autre fait la même vérification de id_reponse mais que ce champ est une valeur égale à l'id principale du commentaire qui s'y raccorde (qui s'auto-incrémente), si ce cas se présente, c'est considéré comme une réponse et le bloc html est inséré sous le commentaire standard (voir code du poste précédent).

La petite subtilité, *j'ai oublié de le précisé* c'est que j'ai un bouton du type: "repondre" sur chaque commentaire qui se trouve dans la boucle parcourant toute ma table "commentaires", donc un id différent par commentaire, et ce bouton ne me sert pas qu'à "répondre" à proprement parlé mais il dispose aussi d'une redirection de type #ancre qui mène sur le formulaire.


Mon raisonnement actuelle :

Les boutons sont tous les mêmes, ils sont créés autant de fois qu'il y a de commentaire (boucle while qui parcours ma table), si je place un <?php echo $data['id']; ?> dans le bouton, je vais avoir l'id sur chaque bouton

EXEMPLE

Sur mon exemple on voit clairement les id des champs commentaires au niveau des boutons. Il y a un exemple de réponse en bas, j'ai inséré manuellement la valeur de l'id du champ commentaire du dessus à savoir 69. Et cela a pour conséquence de placé le commentaire en tant que réponse (grâce à ma requête qui vérifie que id_reponse = id). Le problème c'est que j'aimerais récupéré l'id du champ commentaire au clic, et l’insérer dans ma mon champs "id_reponse" au submit uniquement sous conditions :

Code : Tout sélectionner

if($valid) { if ($reply == '') { $req2 = $bdd->prepare('INSERT INTO commentaires (pseudo, email, website, contenu, id_articles) VALUES (:pseudo, :email, :website, :commentaire, :idarticles)'); $req2->execute(array(':pseudo'=>$pseudo, ':email'=>$email, ':website'=>$web, ':commentaire'=>$commentaire, ':idarticles'=>$idarticles)); $req2->closeCursor(); unset($pseudo); unset($commentaire); echo '<script language="Javascript">document.location.replace("...");</script>'; } else { $req2 = $bdd->prepare('INSERT INTO commentaires (pseudo, email, website, contenu, id_articles, id_reponse) VALUES (:pseudo, :email, :website, :commentaire, :idarticles, :reply)'); $req2->execute(array(':pseudo'=>$pseudo, ':email'=>$email, ':website'=>$web, ':commentaire'=>$commentaire, ':idarticles'=>$idarticles, ':reply'=>id)); $req2->closeCursor(); unset($pseudo); unset($commentaire); echo '<script language="Javascript">document.location.replace("...");</script>'; } }
Ici la deuxieme requête INSERT aussi dans le champs "id_reponse" l'id du commentaire auquel il se raccorde, comme ça il sera placé correctement.

Voila comment je raisonne c'est peut être pas la bonne technique, probablement car je ne parviens pas à faire cela étant donné qu'on demande à ce que des valeurs soit récupérés dynamiquement alors qu'il s'agit là de php... J'ai bien essayé avec AJAX mais en vain, je ne m'y connais pas trop :(