コメント一覧でコメントに対するコメントが正しく表示される記述方法をお教え願います。
お世話になります。どうかご教授頂けませんでしょうか。
サイト作成で、商品に関するコメント一覧ページを作成しております。その一覧で、ある商品のコメントに対する返信、つまりコメントに対するコメント(子コメント)を以下の様にコメントA(親コメント)の下に延々と表示できるようにしたいのですが、現在の状況はその下の様な状況になっており、同じコメントAが重複されます。
・期待する表示
コメントA
コメントAに対するコメントa1
コメントAに対するコメントa2
コメントAに対するコメントa3
コメントAに対するコメントa4
コメントB
………………………………………
……………………………………….
コメントC
………………………………………
……………………………………….
・ 現在の表示
コメントA
コメントAに対するコメントa1
コメントA
コメントAに対するコメントa2
コメントA
コメントAに対するコメントa3
コメントA
コメントAに対するコメントa4
コメントB
………………………………………
……………………………………….
コメントC
………………………………………
……………………………………….
以下は以上の設定の必要最小限を記載したDB、PHP、Smartyでの記述でございます。問題点は何かをご指摘いただけませんでしょうか。あるいはこのようなケースの場合、どのような設定にするのが最適かご教授頂けませんでしょうか。
//DB
親コメント用テーブル(dtb_review)
review_id
product_id
reviewer_name
Comment
Create_date
子コメント用テーブル(dtb_review2)
review_id
original_review_id
reviewer_name
comment
Create_date
*dtb_reviewのreview_idとdtb_review2のoriginal_review_idは同じid(番号)です。
//PHP
$col = "t1.review_id, t1.comment, t1.del_flg, t1.create_date, t1.product_id, t1.reviewer_name, t2.product_id, t5.original_review_id, t5.comment2, t5.reviewer_name, t5.create_date";
$from = "dtb_review as t1
left join dtb_products as t2 using (product_id)
left join dtb_review2 as t5 ON t1.review_id = t5.original_review_id";
$where = " t1.del_flg = 0 ORDER BY t1.create_date DESC";
$this->arrReview = $objQuery->select($col, $from, $where, $arrval);
//Smarty
{section name=cnt loop=$arrReview}
{$arrReview[cnt].comment|h|nl2br}(親コメント)
{if $arrReview[cnt].review_id|h == $arrReview[cnt].original_review_id|h }
{section2 name=cnt loop=$arrReview}
{$arrReview[cnt].comment2|h|nl2br}(子コメント)
{/section2}
{else}
{/if}
{/section}
*あるコメントに対してコメントされると、つまり親コメントに対して子コメントが作成されるとdtb_reviewのreview_idがdtb_review2のoriginal_review_idに渡ります。