2016-12-22 11 views
-2

複数の投稿を表示しようとしていますが、それぞれに独自のコメントがあります。これは、以下のように、最初の投稿(または3つのコメントのうち少なくとも2つを表示)では機能しますが、残りのコメントは表示されません。私は検索しましたが、このサイトまたは他の場所でこの問題に対する答えを見つけることができませんでした(または認識しませんでした)。ありがとう。期待してPHP/mySQLサイトの各投稿のコメントを表示

$result1 = @mysql_query('select * from posts,comments where comment_post_ID = ID and post_status="publish" and comment_approved="1" ORDER BY post_date,category,subcat1,subcat2 ASC'); 
$result2 = @mysql_query('select * from comments where comment_approved="1" ORDER BY comment_date'); 
$row = mysql_fetch_array($result1); 
$row2 = mysql_fetch_array($result2); 
while ($row = mysql_fetch_array($result1)) { 
    $post = $row['post_content']; 
    $id = $row['ID']; 
    $title = $row['post_title']; 
    $content = "<br /><h3 align=\"left\">" . $title . "</h3>\n"; 
    $content .= "<h4 align=\"left\">by " . $row['post_author'] . " - " . $row['post_date'] . "</h4>\n"; 
    $content .= "<p align=\"left\">" . var_export($post, true) . "</p>\n<p>\n"; 
    echo $content; 
    while ($row2 = mysql_fetch_array($result2)) { 
      $comment = "<blockquote>"; 
      $comment .= "<h4 align=\"left\">" . $row2['comment_author'] . " commented on " . $row2['comment_date'] . "</h4>\n"; 
      $comment .= "<p align=\"left\">" . $row2['comment_content'] . "</p>\n<p>\n"; 
      $comment .= "</blockquote>"; 
      if($row2['comment_post_ID'] == $id) { 
       echo $comment; 
      } 
     } 
    } 
+0

をあなたは何をしています。すべての投稿を取得してから、各投稿(ループ内)のpost_idを使用して、その投稿に関連付けられたすべてのコメントを取得する必要があります。私はあなたのコメントテーブルに投稿とコメントテーブルの間の関係を確立するpost_idがあると仮定します。 あなたもjoinを使うことができますが、明確で簡単な理解のためにはすべての投稿を最初に取得し、すべての投稿をループしてpostとinsideループを表示するにはpost IDを渡してすべてのコメントを取得します。コメントと表示をループします。 (ネストされたループを使用)。あなたの要件がコメント付きのすべての投稿を表示している場合は、コードを書き直すことができます。 – webDev

+0

私のループは正しいと思われましたが、明らかにそうではありませんでした。私はすべての投稿、およびコメントを持つ投稿に関連するすべてのコメントを表示したい。はい、コメントテーブルのcomment_post_IDは投稿テーブルのIDに対応しています。ありがとう。 – user2444243

+0

そのような特定の投稿に関連するすべてのコメントをすべての投稿とそのループ検索で最初のループで検索します。 – webDev

答えて

0

これは、以下の、最終的に働いた:

$postData = mysqli_query($conn,"SELECT * FROM wp_posts ORDER BY post_date ASC) or die(mysqli_error()); 
    $commentData = mysqli_query($conn,"SELECT * FROM wp_comments WHERE comment_approved = '1' ORDER BY comment_date ASC") or die(mysqli_error()); 
    $posts = array();  
    while($row = mysqli_fetch_assoc($postData)) { 
     $posts[] = $row; 
     $commentrow = mysqli_fetch_assoc($commentData); 
     $comments[] = $commentrow; 
     echo '<h3>' . $row['post_title'] . '</h3>'; 
     echo '<h5>' . $row['post_author'] . ', ' . $row['post_date'] . '</h5>'; 
     echo '<p>' . $row['post_excerpt'] . '... <a href="' . $row['permalink'] . '">read more</a></p>'; 
     if($row['comment_count'] > 0) { 
      echo '<blockquote>'; 
      echo '<b>Comments</b><br />'; 
      foreach($comments as $comment) { 
       if($row['ID']==$comment['comment_post_ID']) { 
        $comment_excerpt = substr($comment['comment_content'],0,100); 
        echo '<br>' . $comment_excerpt . ' - <b>' . $comment['comment_author'] . '</b>, ' . $comment['comment_date'] . '<br>'; 
        } 
       }    
      echo '</blockquote>'; 
      } 
     } 
関連する問題