2011-12-23 73 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