如何在我现有的PHP发布系统上构建评论系统?

时间:2013-07-28 19:22:51

标签: php mysql

我有一个页面,其中显示了我的朋友和我的最新状态更新。

所涉及的表格是statusUpdates,users&朋友。

我用来提取必要数据的脚本是 -

$myQuery = mysql_query("SELECT * FROM statusUpdates AS su
    LEFT JOIN friends AS fr ON fr.frContactID = su.authorID
    JOIN (users AS u) ON (u.roll = su.authorID)
    WHERE (fr.frHostID = ".$userLoggedIn['roll']." or su.authorID = ".$userLoggedIn['roll'].")
    GROUP BY su.statusID ORDER BY su.statusID DESC LIMIT 0,15");

我用这个打印数据 -

if (mysql_num_rows($myQuery) == 0) echo "No updates to show";
else
{
    while ($row = mysql_fetch_assoc($myQuery))
    {
        // Print $row['statusID'], $row['status'], $row['authorID'], $row['fullName'], $row['userProfileLink'], etc
    }
}

现在我也在考虑整合评论系统。 为此,我将使用以下字段创建一个新表评论 - commentID, targetStatusID, commentorID, comment, commentTimeStamp

我应该如何调整我的mysql查询,以便按以下方式打印每个状态更新的注释 -

status1
 - comment1
 - comment2
 - comment3
[text field for new comment to status1]

status2
 - comment1
[text field for new comment to status2]

status3
 [no comments for this post]
[text field for new comment to status3]

status4
 - comment1
 - comment2
[text field for new comment to status4]

[no more posts to show]

请注意 -

commentID 是主键。 targetStatusID 表示发出评论的特定状态更新。 commentorID 是评论者的ID。 评论是实际内容。 commentTimeStamp 显示评论的时间。

顺便说一下,我想用程序编程实现整个过程,不是OOP

解决此问题的方法之一是在($row = mysql_fetch_assoc($myQuery))内使用查询选择$row['statusID']的评论。

但如果我想显示很多帖子,那会增加查询次数。

那么我的方法应该是什么?

P.S。我遇到了类似的问题,但他们的答案都没有解决我的问题。

1 个答案:

答案 0 :(得分:0)

我已经为你的结构做了一个SQLfiddle。它不完全相同,但基础数据存在。

http://sqlfiddle.com/#!2/c91cb/16

使用此结果,您可以使用explode函数将注释提取到数组。我设法只使用分隔符和用户ID获取注释。如果有人可以编辑查询,那么它将获取用户名,这将是好的

修改 如果没有人会编辑查询,您可以爆炸这些ID并运行另一个查询,这样您就可以获得用户名。如果您需要帮助,请留下评论