2011-12-23 115 views
1

我有一个网站,用户可以评价页面上留下的评论。每条评论都有一个唯一的ID(例如402934)如果我希望用户能够对所述评论进行缩略/缩略显示,我可以看到如何制作一个简单的计数器代码来跟踪缩略图的数量与拇指-downs,但我怎样才能确保每个用户只评论一次评论。我将制作一个数据库,每个评论数字作为一行,并在该行有一个所有的用户排名大拇指和所有的用户排名拇指下来,但我有一种感觉是不是最好的办法。我的下一个想法是为每个用户制作一个表格,然后让一个数组显示用户排名的所有评论。它可能会与user_idcomment_idvote TINYINT(1)跑得更快这种方式(例如,从用户的150分排名检查经文注释的6050个排名,但我仍然觉得自己有一个更好的办法...任何想法?允许用户评价一次PHP MySQL

+0

@ManseUK一个cookie很容易被用户删除。更好,更持久的解决方案,在您可以控制的地方,数据库解决方案如下所示,请参阅refp – 2011-12-23 15:22:04

回答

7

创建新表。

1vote的值是一个竖起大拇指的0vote的值是一个大拇指朝下。

有一个UNIQUE KEY约束(comment_id, user_id)


如果您按照上述步骤操作,将很容易检查用户是否对特定评论投了票,如果您希望能够快速(如在快速执行中)查看用户的所有评论已使您还应该添加INDEXuser_id


当用户的投票,你可以使用REPLACE INTOuser_comment_thumbs,如下面的:

REPLACE INTO `user_comment_thumbs` (user_id,comment_id,vote) 
VALUES (@user_id, @comment_id, @vote); 

如果用户已经做出了表决表中的条目将被更新,否则新行将被插入。

+0

SWEET :)正是我所需要的! – 2011-12-23 15:31:01

+0

@refp很棒的回答! – 2011-12-23 15:33:02