Bonjour à tous;

Je me heurte à un soucis de taille qui est du à la multitude des langages à utiliser pour faire mon système de réponse de commentaire...

Je m'explique :

J'ai deux requetes SQL différentes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 de cette façon:

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
21
22
23
24
25
26
27
28
<!-- On sélectionne les commentaires depuis la bdd -->
<?php
    $req = $bdd->prepare('SELECT * FROM commentaires WHERE commentaires.id_articles='.$id_article_get.' AND commentaires.id_reponse=0 ORDER BY commentaires.id DESC');
    $req->execute();
    while($data = $req->fetch()):
    $reponse = $data['id'];
?>
            <!-- Partie HTML -->
            <COMMENTAIRE PRINCIPALE  <?php echo $reponse ?> >
 
        <!-- On selectionne les réponses depuis la bdd et on les place au bon endroit -->
        <?php
            $req2 = $bdd->prepare('SELECT * FROM commentaires WHERE commentaires.id_articles='.$id_article_get.' AND commentaires.id_reponse='.$data['id'].' ORDER BY commentaires.id');
            $req2->execute();
            while($data2 = $req2->fetch()):
        ?>
        <!-- Partie HTML -->
        <REPONSE COMMENTAIRE...>
 
        <?php
        endwhile;
        $req2->closeCursor();
        ?>
 
<?php
endwhile;
$req->closeCursor();
?>
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 :

Il faudrait que je puisse injecter dans un champs caché la valeur de l'id (venant du bouton répondre). Ensuite au "submit" je fais une vérification par condition du type si la variable $reply est vide alors tu me lance une requête sinon tu m'en lance une autre.

Exemple, dans le champ input:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<input type="hidden" name="reply" value="<?php echo $reply;?>" >
Dans la partie php au submit du formulaire:
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
21
22
23
24
25
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