Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1347 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Système de commentaire PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Système de commentaire PHP

n°2007149
fab1105
Posté le 05-07-2010 à 14:25:11  profilanswer
 

Bonjour, j'ai un système de commentaire en PHP dans lequel j'aimerai ajouter une fonctionnalité de réponse à un post en particulier, c'est à dire la possibilité de pouvoir répondre à quelqu'un et faire en sorte d'afficher cette réponse juste au dessous de son post.
J'ai une table commentaires qui contient les champs suivants : id, nom, commentaire, date et un champs post_id qui prend la valeur de l'id du commentaire auquel on répond.
Jusque là pas de problème et lorsque j'affiche les commentaires la réponse vient bien se placer au dessous du post auquel on répond.
Cependant si l'on répond de nouveau à une réponse, là cette réponse vient se placer à la fin de la liste des commentaires.
Voici mon script pour afficher les commentaires, je suis bien conscient de l'erreur qui cause le problème mais je n'arrive pas à trouver la bonne méthode pour pouvoir répondre et aux commentaires et aux réponses de commentaires :  

Code :
  1. $req = $bdd->prepare('SELECT * FROM commentaires');
  2.   $req->execute();
  3.   while($data = $req->fetch(PDO::FETCH_OBJ))
  4.   {
  5.     if($data->post_id==0)
  6.     {
  7.       echo '<div class="commentaires">';
  8.       echo '<p>'.$data->nom.'</p><br />';
  9.       echo '<p>'.$data->commentaire.'</p><br />';
  10.       echo '</div>';
  11.     }
  12.     $req2 = $bdd->prepare('SELECT * FROM commentaires WHERE post_id=:id');
  13.     $req2->execute(array('id'=>$data->id));
  14.     while($data2 = $req2->fetch(PDO::FETCH_OBJ))
  15.     {
  16.       echo '<div class="reponse">';
  17.       echo '<p>'.$data2->nom.'</p><br />';
  18.       echo '<p>'.$data2->commentaire.'</p><br />';
  19.       echo '</div>';
  20.     }
  21.   }


 
Quelqu'un pourrait-il me donner un coup de main ?
Merci.

mood
Publicité
Posté le 05-07-2010 à 14:25:11  profilanswer
 

n°2007158
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 05-07-2010 à 14:48:22  profilanswer
 

pourquoi créer un systeme complet avec bdd et tout ? [:cerveau mlc]  
 
T'es au courant que les commentaires ça s'ecrit // ou /* */ ? [:naunaud128]


---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
n°2007161
fab1105
Posté le 05-07-2010 à 14:53:17  profilanswer
 

Euh "pourquoi créer un système complet avec bdd et tout ?" tu fais comment pour stocker 15000 commentaires sans bdd ?  et tu me parles de commentaires à écrire dans la code avec des // ou des /* */, t'as pas du comprendre la question.... pour écrire des trucs pareil la prochaine fois économise ton clavier!

n°2007168
ZePRiNCE
Coucou, tu veux voir ma RTX ?
Posté le 05-07-2010 à 15:13:47  profilanswer
 

Je sais, j'avais envie de faire l'emmerdeur pour une fois pour un finisterien comme moi :o
 
Désolé [:hank hullet-derire]


---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
n°2007183
omega2
Posté le 05-07-2010 à 15:47:52  profilanswer
 

Vu ce que tu veux faire, il n'y a que deux solutions :  
1) une fonction récursive.
2) une boucle et l'utilisation des tableaux (ou d'objets selon tes habitudes) pour recréer l'arborescence des messages avant de commencer à afficher les données.
 
En français, une fonction récursive, c'est une fonction qui est capable de s'appeler elle même.
 
La première méthode à l'avantage de consommer moins de mémoire du côté de php.
La seconde à l'avantage de nécessiter beaucoup moins de requêtes sql et donc d'être plus rapide.

n°2007184
fab1105
Posté le 05-07-2010 à 15:50:46  profilanswer
 

Salut omega, merci pour ta réponse. Comment écrirais tu cette fonction par exemple, parce que là je ne vois pas trop comment faire.
Merci.

n°2007193
stealth35
Posté le 05-07-2010 à 16:15:04  profilanswer
 

pense a PDO::FETCH_GROUP t'auras pas besoin de faire 2 requêtes

n°2007197
omega2
Posté le 05-07-2010 à 16:28:40  profilanswer
 

function test($id){
//la requette sur l'id
//si des résultats alors on boucle
//pour chacun, on l'affiche puis on appelle la fonction "test" avec l'id de la réponse courante
//fin de la boucle
// fin de la fonction
}
 
 
Voilà pour le principe de base de la fonction récursive.
 
 
stealth35 > A ma connaissance PDO::FETCH_GROUP ne fait pas de récursif. C'est bon si on a juste un niveau de regroupement, quand on en a deux ou plus, ça ne marche plus


Message édité par omega2 le 05-07-2010 à 16:32:52

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Système de commentaire PHP

 

Sujets relatifs
comment verifier existence valeur dans array sans passer par foreach?[PHP] Parser XML et &
Récupération de la taille d'un champ BLOB en PHPPHP Pb de sortie de boucle
echo apres une image PHP ne marche pas !!!!Faire de statistique sur une BD MYSQL en PHP
PYTHON PHP BDD : Gros problème d'encodagePHP & MySQL : date_format()
[PHP] try catch imbriqués.Problème code PHP insertion données form dans DB
Plus de sujets relatifs à : Système de commentaire PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR