2

PHP-MySqlを使用して、自分のWebサイトに高度なコメントシステムを実装しようと考えました。私はついにこの目的のために3レベルのコメント返信システムに落ち着きました。そうですね、その目的のために、SQLデータベースのデータ構造を実装するためにこの記事に出くわしました。

使用したい機能にネストされたセットmdoelを使用することを計画しました。コメントの構成はこんな感じ-

<ul>
    <li>Parent comment</li>
        <ul>
            <li>First reply of parent comment</li>
            <ul>
                <li>reply of the previous reply</li>
                   <ul>
                       <li>reply of the previous reply</li>
                       <li>another reply of the previous reply</li>
                   </ul>
                <li>another reply of the previous comment</li>
             </ul>
             <li>second reply of the parent comment</li>
        </ul>
</ul>

このタイプの構造では、PHPをいじって、親とその子を一意に検出するクエリを表示し(各コメントに関連付けられたユーザーの詳細を取得するため)、上記の方法で出力を生成します。誰かがそれを行う方法を知っていますか?私を助けてください。

編集 :

コメントテーブルにリンクされたSQLの個別のユーザーテーブルがありますuser.id=comment.id。それで、これを考慮して、各コメントのユーザーアクティビティを検出するための推奨されるアプローチは何でしょうか?つまり、たとえば、親コメント2のサブコメントのユーザー名と電子メールを取得したいのです。

4

1 に答える 1

1

「ノードの深さの検索」のクエリを使用すると、このPHPコードでネストされたリストが作成されます。

$cur_depth = -1;
while ($row = mysqli_fetch_assoc($query)) { // Loop through results of query
  if ($row['depth'] > $cur_depth) {
    echo "<ul>\n";
    $cur_depth = $row['depth'];
  }
  else while ($cur_depth > $row['depth']) {
    echo "</ul>\n";
    $cur_depth--;
  }
  echo "<li>" . $row['comment'] . "</li>\n";
}
while ($cur_depth > -1) {
  echo "</ul>\n";
  $cur_depth--;
}
于 2012-08-19T19:03:14.680 に答える