2010-07-26 78 views
1

如何保存用户对特定评论的投票?例如,如果有人喜欢发布在网站上的评论,他/她将点击(+)按钮或以其他方式点击( - )按钮。 我如何将这些信息保存到mysql,以便当用户回到网站时,我可以在评论上显示他/她的投票?像Facebook一样的评论像系统一样。我应该创建一个新的MySQL表来记录它们全部?假设用户已经是注册用户。如何保存用户对mysql的评论投票通过php?

我现在的评语表

id | date | userid | page | comment | 

我希望像

$username - $date 
$comment <no.of likes> likes, <no.of hates> hates. 

回答

3

你描述一个多一对多的关系。您需要用户和评论之间的中间表,因为任何用户都可以对任何评论投票,并且任何评论都可以从任何用户获得投票。这可能是这样的:

user_id | comment_id | direction

如果您不需要任何数据存储有关谁在什么投票,然后你可以再补充一个score列到你的意见表中,被增加或每当用户投票时减少。如果您希望在显示评论时快速获得评分,但也可以同时执行这两项操作,但保留以后投票的信息。

编辑:

作为一个想法之后,你可能想避免score列。如果您不记录该用户已投票的评论,则可能会遇到单个用户可以多次投票评论的情况。

+0

有没有其他方法可以做到这一点?像存储用户ID和投票作为JSON字符串在同一个评论表?我知道这会恶化的条件.. 所以用你做的方式,你如上所述,我怎么可以加入表,并可以得到用户的名称,而不是用户名? 我知道一个名为join mysql的方法,但是作为一名学生我很难理解。 – kornesh 2010-07-26 15:22:56

+0

我不希望用户对评论多次投票,这意味着一旦他/她投票保存了投票,然后当用户回到相同评论时,他们可以更改他们的投票(覆盖而不是添加) – kornesh 2010-07-26 15:29:35

+0

中间表是正确的做法。 – Hammerite 2010-07-26 15:38:11