2010-06-04 3 views
1

J'essaie d'afficher mes commentaires et mes commentaires sur ma page web, mais je ne peux pas obtenir les réponses à afficher avec le bon commentaire peut-on aider à résoudre ce problème? Par ailleurs, toutes les instructions if else doivent afficher des couleurs différentes pour le commentateur ou le réplicateur s'il est le créateur ou l'utilisateur de la page.PHP/MySQL Comment faire en sorte que mes commentaires et réponses s'affichent correctement?

Voici les tables MySQL.

CREATE TABLE comments (
comment_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
parent_id INT UNSIGNED NOT NULL, 
user_id INT UNSIGNED NOT NULL, 
page_id INT UNSIGNED NOT NULL, 
comment TEXT NOT NULL, 
date_created DATETIME NOT NULL, 
PRIMARY KEY (id), 
KEY user_id (user_id), 
KEY page_id (page_id) 
); 


CREATE TABLE users (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
user_id INT UNSIGNED NOT NULL, 
PRIMARY KEY (id) 
); 

Voici le code PHP MySQL &.

$mysqli = mysqli_connect("localhost", "root", "", "sitename"); 
$dbc = mysqli_query($mysqli,"SELECT comments.*, users.* 
          FROM comments 
          LEFT JOIN users 
          ON comments.user_id = users.user_id 
          WHERE page_id = $page_id 
          ORDER BY parent_id ASC"); 

if (!$dbc) { 
    print mysqli_error(); 
} else { 
    while($row = mysqli_fetch_array($dbc)){ 
     $comment_user = $row['user_id']; 
     $comment_id = $row['comment_id']; 
     $comments = $row['comment']; 
     $parent_id = $row['parent_id']; 

      if($comment_user == $user_id && $parent_id == 0){ 

       echo '<p class="page-creator-comment">' . $comments . '</p>'; 

      } else if($comment_user != $user_id && $parent_id == 0) { 

       echo '<p class="commenter">' . $comments . ''; 

      } else if($comment_user == $user_id && $parent_id >= 1){ 

       echo '<p class="page-creator-reply">' . $comments . '</p>'; 

      } else if($parent_id >= 1){ 

       echo '<p class="reply">' . $comments . '</p>'; 

      } 
    } 
} 
+0

Votre problème est un peu ambigu. Pourriez-vous fournir un exemple de sortie avec les enregistrements de base de données associés? – mikegreenberg

+0

duplication possible de [Affichage correct des commentaires en utilisant PHP/MySQL] (http://stackoverflow.com/questions/2978942/displaying-comments-correctly-using-php-mysql) –

Répondre

0

Vous pouvez insérer les commentaires dans un tableau associatif, déterminer s'ils sont parents, puis attacher des enfants au parent. Après avoir trié/comparé vos commentaires, faites une boucle et recrachez-les.

Quelque chose de très à peu près comme:

$comments = array(); 
if($parent_id == 0) 
{ 
    $comments[] = array($comment_id => [all your comment data (possibly as stdObject)],array()); 
} 
else if($parent_id > 0) 
{ 
    $comments[$parent_id][] => array($comment_id => [all your comment data]); 
} 
+0

Sa requête EST trier par parent_id: ORDER BY parent_id ASC – mikegreenberg

+0

Doh. Lisez-le trop vite. Mais vous aurez toujours des parents suivis par des enfants. Si vous les imprimiez dans l'ordre de récupération, les enfants ne seraient pas imprimés avec leurs parents associés. – ashurexm

Questions connexes