0

一度に数百のコメントを処理できるスレッド化されたコメントシステムをPHPとMySQLで作成する方法がわかりません。

私が思いつくことができるのはこのようなものだけです

$query = execute_query...('SELECT * FROM `comments` WHERE `post` = "1"');
foreach($query as $comment){
    $replies = execute_query...('SELECT * FROM `comment_replies` WHERE `comment` = "' . $comment['id'] . '"');
    if($replies){
        echo $comment['body']; //....
        foreach($replies as $reply){ /*....*/ }
    }
    else{
        echo $comment['body'];
    }
}

したがって、データベース構造に関するヒントと、パフォーマンスを念頭に置いてスレッド化されたすべてのコメントを取得する方法が必要です:)

4

3 に答える 3

6

MySQLでの階層データの管理に関する記事が役立つと確信しています。これらの2つのテーブルは簡単に1つにマージできます

于 2010-01-27T22:19:10.647 に答える
1

コメントとcomment_repliesテーブルを結合してみませんか?

次に、コメントまたはcomment_replyのどちらであるかを示す生成フィールドを追加します。そして、次のようなforeachでifを使用してそれらを選択します。

if($type == 'comment') 
{
      //do something with the comment
}
elseif($type == 'comment_reply')
{
      //do something with the comment reply
}

また、コメントIDが変更されているかどうかを確認して、それらを分離できるようにします。

于 2010-01-27T21:48:07.317 に答える
1

入れ子集合モデルではなく隣接リストモデルを選択します。入れ子集合モデルでは、テーブルで実行されるすべてのINSERTおよびDELETE操作でツリー構造全体を構築する必要があり、1000のレコードがある場合は、単一のINSERTまたはDELETE操作では、すべてのレコードを更新する必要があり、実行に時間がかかります。私のデータベース構造は次のようになります。 ここに画像の説明を入力してください

また、phpmysqljqueryとajaxを使用して小さなスレッドコメントシステムを作成しました。http://pradipchitrakar.com.np/programming/threaded-comment-system/をご覧ください

于 2012-08-08T09:45:29.010 に答える