0

良い一日を!

私はこれを何時間も理解しようとしてきましたが、うまくいきません。
最新の返信順に並べられたすべてのスレッドを表示するフォーラムがあります。
データベース:
テーブル スレッド
thread_id、category_id、title、created、author、status

テーブルの返信
reply_id、thread_id、作成済み、テキスト

クエリ:

$query = mysqli_query($link, "SELECT * FROM threads, replies 
WHERE threads.thread_id=replies.thread_id AND threads.category_id=$cat 
AND threads.status=1 ORDER BY replies.reply_id DESC");

問題: 最新の返信があるスレッドのみが表示されます。while ループを使用して、すべての行をエコーアウトします。mysqli_num_rows($query) は 3 を示していますが、表示されるスレッドは 1 つだけです。while ループは単純に次のもので構成されます。

while($r = mysqli_fetch_assoc($query))
{
   $thread_id = $r['thread_id'];
                    $total_comments = mysqli_num_rows(mysqli_query($link, "SELECT thread_id FROM replies WHERE thread_id=$thread_id"));
                    $last_comment = mysqli_query($link, "SELECT * FROM replies WHERE thread_id=$thread_id ORDER BY reply_id DESC LIMIT 0,1");
                    $rLastComment = mysqli_fetch_assoc($last_comment);
    $query = mysqli_query($link, "SELECT author FROM threads WHERE thread_id=$thread_id");
    $a = mysqli_fetch_assoc($query);
    echo '<tr>
     <td><img src="" alt=""></td>
     <td><a href="/forum/thread/'.$thread_id.'">'.$status.''.(substr($r['title'], 0, 15)).'</a> </td>
     <td>'.$a['author'].'</td>
     <td>'.($total_comments).'</td>
     <td>'.$lastComment.'</td>
     </tr>';
}
4

1 に答える 1

0

mysqli_fetch_assoc()行ごとに 1 回、繰り返し呼び出す必要があります。

while ループを使用して結果を出力する方法の例については、PHP ドキュメントを確認してください: http://php.net/manual/en/mysqli-result.fetch-assoc.php

于 2013-04-23T11:41:57.973 に答える