PHP评论与回复。如何循环

时间:2013-06-06 20:33:09

标签: php mysql database loops mysqli

我正在构建一个应用程序,让用户可以将自己的贡献添加到帖子流中,这些应用程序按贡献ID进行升序排序(即评论按照发布顺序依次显示)。但是,在每个评论中都有一个“贡献如下”的选项,在这种情况下,新贡献应直接显示在所选评论的正下方,而该评论基本上是回复的。我想我会在contrib_parent_id的贡献表中添加一个列...但是,我有点不清楚如何将parent_id不为NULL的那些帖子合并到现有循环中。现在我有

<?php 

  $sql_cont = "SELECT * FROM contributions 
               JOIN users on user_id = cont_author
               WHERE cont_stream_id = $sid";
  $result_cont = query($sql_cont);

  while($data_cont = mysqli_fetch_array($result_cont)) { ?>

    <div class="contrib">
    <img class="streamAvi" src="<?php echo $data_cont['user_avi']; ?>" alt="prof">
        <section class="textCont"><?php echo html_entity_decode($data_cont['cont_content'], ENT_QUOTES); ?></section>
    </div>

<?php } ?>

这当然显示了所有贡献的顺序,而不考虑一个是否是对另一个人的回复。非常感谢任何帮助,如果需要,我可以为我的问题添加更多细节。谢谢!

编辑 -

我尝试了以下操作,使用了2个单独的查询,显示了没有父级的所有注释,然后显示了对每个原始注释的回复的所有注释。当你回复回复时会出现问题,因为第一个回复不在原始循环中(因为它有一个父回复)。

$sql_cont = "SELECT * FROM contributions 
JOIN users on user_id = cont_author
WHERE cont_stream_id = $sid";
$result_cont = query($sql_cont);

$sql_reply = "SELECT * FROM contributions 
JOIN users on user_id = cont_author
WHERE cont_stream_id = $sid AND cont_parent IS NOT NULL";
$result_reply = query($sql_cont); 

while($data_cont = mysqli_fetch_array($result_cont)) {
if($data_cont['cont_parent'] == NULL) { ?>

    <div class="contrib">
    <img class="streamAvi" src="<?php echo $data_cont['user_avi']; ?>" alt="prof">
        <section class="textCont">
            <?php if($data_cont['cont_content'] != NULL) { echo html_entity_decode($data_cont['cont_content'], ENT_QUOTES); } if($data_cont['cont_video_code'] != NULL) { echo html_entity_decode($data_cont['cont_video_code'], ENT_QUOTES); } ?>
        </section>
        <section class="contAbout">
            <div class="likes">
                <span class="likeNum num<?php echo $data_cont['cont_id']; ?>"><?php if(mysqli_num_rows($result_num) == 0) { echo "0"; } echo $com['number']; if($com['number'] == 1) { echo " Like"; } else { echo " Likes"; } ?></span>
                <button id="<?php echo $data_cont['cont_id']; ?>" class="likeBtn like<?php echo $data_cont['cont_id']; ?> <?php if($check==1) { echo "hidden"; } ?>"></button>
                <button id="<?php echo $data_cont['cont_id']; ?>" class="unlikeBtn unlike<?php echo $data_cont['cont_id']; ?> <?php if($check==0) { echo "hidden"; } ?>"></button>         

                <span class="contAdd">6 hours ago from <a href="profile.php?user=1"><?php echo $data_cont['username']; ?></a>, <?php echo $data_cont['user_bio']; ?></span>
            </div>     

 <span class="contAdd contMore">Source - <a href="javascript:;" class="contBelow" data-parent_id="<?php echo $data_cont['cont_id']; ?>">Contribute Below</a></span>

    </section>
    </div>

<?php } //  end if

while($data_reply = mysqli_fetch_array($result_reply)) {
    if($data_reply['cont_parent'] == $data_cont['cont_id']) { ?>

    <div class="contrib">
    <img class="streamAvi" src="<?php echo $data_reply['user_avi']; ?>" alt="prof">
        <section class="textCont">
            <?php if($data_reply['cont_content'] != NULL) { echo html_entity_decode($data_reply['cont_content'], ENT_QUOTES); } if($data_reply['cont_video_code'] != NULL) { echo html_entity_decode($data_reply['cont_video_code'], ENT_QUOTES); } ?>
        </section>
        <section class="contAbout">
            <div class="likes">
                <span class="likeNum num<?php echo $data_reply['cont_id']; ?>"><?php if(mysqli_num_rows($result_num) == 0) { echo "0"; } echo $com['number']; if($com['number'] == 1) { echo " Like"; } else { echo " Likes"; } ?></span>
                <button id="<?php echo $data_reply['cont_id']; ?>" class="likeBtn like<?php echo $data_reply['cont_id']; ?> <?php if($check==1) { echo "hidden"; } ?>"></button>
                <button id="<?php echo $data_reply['cont_id']; ?>" class="unlikeBtn unlike<?php echo $data_reply['cont_id']; ?> <?php if($check==0) { echo "hidden"; } ?>"></button>         

                <span class="contAdd">6 hours ago from <a href="profile.php?user=1"><?php echo $data_reply['username']; ?></a>, <?php echo $data_reply['user_bio']; ?></span>
            </div>     

 <span class="contAdd contMore">Source - <a href="javascript:;" class="contBelow" data-parent_id="<?php echo $data_reply['cont_id']; ?>">Contribute Below</a></span>

    </section>
    </div>  


    <?php } // if

} // end reply while
mysqli_data_seek($result_reply,0);

    } // end main while ?>

0 个答案:

没有答案