回复评论:数据库结构和php查询

时间:2017-02-23 14:40:47

标签: php mysql comments reply

我需要使用PHP和MYsql向我的网站添加“评论回复”功能。 我有这3个数据库:

PAGE
╔═════════╦══════════╗
║ id      ║ content  ║
╠═════════╬══════════╣
║ 1       ║ text     ║
║ 2       ║ text     ║ 
║ 3       ║ text     ║
╚═════════╩══════════╝
USER
╔═════════╦══════════╗
║ id      ║ name     ║
╠═════════╬══════════╣
║ 1       ║ name     ║
║ 2       ║ name     ║ 
║ 3       ║ name     ║
╚═════════╩══════════╝
COMMENTS
╔═════════╦══════════╦═══════════╦══════════╗
║ id      ║ user_id  ║ page_id   ║ content  ║
╠═════════╬══════════╬═══════════╬══════════╣
║ 1       ║ 1        ║ 1         ║ text     ║
║ 2       ║ 2        ║ 1         ║ text     ║
║ 3       ║ 2        ║ 2         ║ text     ║
╚═════════╩══════════╩═══════════╩══════════╝

我用简单的查询填充各种页面(page.php?page = 1有不同的内容来自page.php?page = 2):

$content = $db->prepare("
SELECT

p.id AS page_id,
p.content AS content

FROM `page_content` AS p

WHERE p.id = :id

");
$content->BindValue(':id', $_GET['page']);
$content->execute();
$content = $content->fetchAll(PDO::FETCH_ASSOC);

然后显示带有“echo”的结果:

<p><?php echo $content[0]['content']; ?></p>

为了显示相对页面的注释,我准备并执行以下查询:

$comments = $db->prepare("
    SELECT

    c.id AS comment_id,
    c.user_id AS user_id,
    c.page_id AS page_id,
    c.content AS comment_content,

    u.id AS user_id,
    u.name AS user_name

    FROM `comments` AS c

    LEFT JOIN `users` AS u
    ON u.id = c.user_id

    WHERE c.page_id = :id

    ");
$comments->BindValue(':id', $_GET['page']);
$comments->execute();
$comments = $comments->fetchAll(PDO::FETCH_ASSOC);

现在,只需使用“foreach”,我就可以在页面底部看到所有相关评论和作者内容:

foreach ($comments as $value) {
   echo '<h4>' . $value['user_name'] . '</h4>' ;
   echo $value['comment_content'] . '<br/><br/>' ;
}

现在我需要添加评论的回复,作者也是如此。 我构建了以下数据库:

REPLIES TO COMMENTS
╔═════════╦══════════════╦═══════════╦══════════╗
║ id      ║ is_reply_to  ║ user_id   ║ content  ║
╠═════════╬══════════════╬═══════════╬══════════╣
║ 1       ║ 3            ║ 1         ║ text     ║
║ 2       ║ 2            ║ 1         ║ text     ║
║ 3       ║ 2            ║ 2         ║ text     ║
╚═════════╩══════════════╩═══════════╩══════════╝

从这里,我不能去看看我的“网络应用程序”并完成它。 我不知道如何调用查询,也不知道如何按正确的嵌套顺序对结果进行分组(下一条评论只有在上一条评论的回复列表完成后才出现在列表中 - 当然还有回复)。 我只需要一个级别的评论回复。对“回复回复”不感兴趣。

尝试了其他解决方案,我找到了其他解答,但似乎没有一个对我有用。

0 个答案:

没有答案