Disqus のようなコメント スレッドを作ろうとしています。各コメントに返信できるようにコメントを表示するようにPHPでロジックを設定するのに問題があり、それらのコメントは互いに添付されたままになります。
これが私のMySQLコメントテーブルです:
comment_id comment item_id replied_to_id time
1 hello1 1 1 1:00pm
2 hello2 1 1 2:00pm
3 hello3 1 3 3:00pm
4 hello4 2 4 4:00pm
5 hello5 1 2 2:00pm
6 hello6 1 3 6:00pm
item_id
コメントが議論している親アイテムを示す列です。
を含むすべてのコメントをデータベースから取得すると、とが適切に一致item_id=1
するようにそれらをスレッド化する方法がわかりません。たとえば、に一致する必要があります。comment_id
replied_to_id
comment_id=2
comment_id=1
これが私のPHPです:
<?foreach($comments as $row){
if($row->comment_id==$row->replied_to_id){
echo $row->comment."-".$row->time; //desired output: hello1-1:00pm
foreach($comments as $sub_row){
if($row->comment_id!=$sub_row->replied_to_id){
echo $sub_row->comment."-".$sub_row->time;// desired output: hello2-2:00pm
foreach($comments as $sub_sub_row){
if($row->comment_id!=$sub_sub_row->replied_to_id){
echo $sub_sub_row->comment."-".$sub_sub_row->time;// desired output: hello5-5:00pm
}
}
}
}
}
else{
echo $row->comment."-".$row->time; // desired output: hello3-3:00pm
}
}
これは間違っているように見えます。これを行うためのより良い方法が必要です。