如何在评论中竖起大拇指?

时间:2009-12-27 18:09:04

标签: php mysql comments

我甚至不知道应该问什么问题。好吧,我想为我的评论竖起大拇指,但不确定如何或最好的方式。我只是为竖起大拇指创建一个新字段吗?

5 个答案:

答案 0 :(得分:5)

如果您需要跟踪对哪些人投票,您应该制作Votes表:

  • vote_id:主键。
  • user_id:进行此投票的用户的ID。 [Users表的外键。]
  • comment_id:投票的评论ID。 [Comments表的外键。]
  • vote:投票(如果你只有一个微不足道的竖起/缩小系统,可能是+1或-1)。
  • date:投票时。

评论的分数现在只是具有vote的所有comment_id列的总和。

请注意,与在score表中添加整数Comments列不同,这样做的好处是可以告诉您评论所遇到的争议程度。在不知道投了多少票的情况下,两个评分的净得分为零可能会遇到很多争议(人们对评论的优点同样分歧,所以总得分徘徊在0左右),或根本没有(没有人关心投票。)

答案 1 :(得分:4)

仅仅存储评论已被投票的次数的int将受到滥用。您可能还希望将每个投票与投射它的用户相关联,这样您就可以阻止人们对同一评论进行反复投票。

为了实现这一目标,我认为你需要一张单独的投票表。该表中的每条记录都应具有评论ID和投票人的用户ID。

答案 2 :(得分:1)

这取决于你想用它做什么。为什么不在评论表上添加int列,为评论存储竖起/缩小的总数?

答案 3 :(得分:0)

如比尔和约翰所建议的那样,创建一个单独的表可能是最好的方法。但出于性能原因,您可能仍希望在votes表中添加comments列。这样,当您只想显示评论的投票计数时,您将无需访问votes表。我相信这就是投票的工作方式。

答案 4 :(得分:0)

在评论表中创建2个字段vote_upvote_down,并在用户投票时相应地增加其计数器,这样您就可以将评论分数显示为这些值的总和或百分比,在后一种情况下,您可以添加第三个字段vote_score,如果您希望能够按分数排序,则会存储百分比。

然后创建投票表以防止用户在相同的时间段内投票两次相同的评论,如果是这样,只需将cron作业设置为每天运行一次并删除早于time()-( 86400 * DAYS_TO_KEEP_VOTE )的条目

  • COMMENT_ID
  • USER_ID
  • vote_time
祝你好运。