微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

评论 – 回复PHP脚本 – 仅回复第一条评论

问题

我正在创建一个标准的评论回复脚本,用户可以在文章中发表评论,也可以回复其他用户评论.我能够通过PHPMysqL发布和检索评论.问题是我无法检索所有评论的“回复”.仅显示第一条评论回复.删除第1条评论后,会显示对第2条评论回复.

我桌子的数据结构

如果某人发布了新评论,那么他的姓名和评论将以自动递增ID输入到数据库中;认情况下,回复值为“0”.
如果有人回复评论,则所有详细信息都以与上述相同的方式填写,但回复值除了回复发布的评论的id中的值,如下所示
(MysqL表的结构看起来像这样):

|id | name  |            comment            | reply |
|---|-------|-------------------------------|-------|
| 1 |Pranav | This is Pranav's Comment      |   0   | 
| 2 |Anita  | This is the Anita's Comment   |   0   |
| 3 |Rishab | 1st reply to Pranav's comment |   1   |
| 4 |Paul   | 1st reply to Anita's comment  |   2   |
| 5 |James  | 2nd reply to Pranav's comment |   1   |
| 6 |Rachel | This is Rachel's comment      |   0   |
| 7 |Pranshu| 1st Reply to Rachel's comment |   6   |
| 8 |Leora  | 2nd Reply to Anita's comment  |   2   |
| 9 |Pekka  | 3rd Reply to Anita's comment  |   2   |

例如.如果有人回复Anita的评论,其id = 2;然后,发布的新回复回复列的值将自动变为2.

PHP代码

$result保存comments数组
$result_reply保存这些评论回复
while($row = MysqLi_fetch_array($result))循环显示注释
嵌套while($row_reply = MysqLi_fetch_array($result_reply))循环被写入以显示每条评论下的相应回复,但这不会发生.
if($reply_reply == $id)循环检查具有特定注释的id的回复代码,以便特定回复显示在相应注释下.
数据库名称是’oxygentimes’,表是’评论

<?PHP

$dbc = MysqLi_connect('localhost', 'root', '', 'oxygentimes') or die('Error connecting to MysqL server');

$query = "SELECT * FROM `comments` WHERE reply=0";
$query_reply = "SELECT * FROM `comments` WHERE reply!=0";

$result = MysqLi_query($dbc, $query) or die('Error quering database');

$result_reply = MysqLi_query($dbc, $query_reply) or die('Error quering database');

while ($row = MysqLi_fetch_array($result)) {
    $id = $row['id'];
    $name = $row['name'];
    $comment = $row['comment'];
    $reply = $row['reply'];

    if ($reply == 0) {
        echo "
        <div class='comment'>
            <div>$name</div>
            <div>$comment</div>
            <input type='hidden' value='$id'>
        </div>";

        while ($row_reply = MysqLi_fetch_array($result_reply)) {
            $name_reply = $row_reply['name'];
            $comment_reply = $row_reply['comment'];
            $id_reply = $row_reply['id'];
            $reply_reply = $row_reply['reply'];

            if ($reply_reply == $id) {

                echo "
                <div class='reply-comment'>
                    <div>$name_reply</div>
                    <input type='hidden' value='$id_reply'>";
                echo "<div>Reply: $comment_reply</div>
                </div>";
            };
        };
    }
}

我只看到第一条评论下的回复.删除第一条评论后,会显示第二条评论回复.
请帮忙!无法弄清楚错误.

解决方法:

查询一个循环内的回复.我并不是说这是最好的解决方案.

while ($row = MysqLi_fetch_array($result)) {

    // construct query here

    $result_reply = MysqLi_query($dbc, $query_reply)
        or die('Error quering database');
    //... etc.
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐