2012-12-17 56 views
0

即時製作一個網站,這是一個新聞/博客種類的網站,人們可以在其中發表評論。然後登錄的用戶可以通過拇指向上或向下發表評論。它現在工作正常,我點擊拇指,它使用ajax將計數添加到數據庫並更新數字,它也阻止人們能夠再次點擊拇指,但如果你按f5刷新頁面,你可以再次點擊拇指。我怎樣才能阻止這種情況發生? 添加到數據庫是一個選項,我想到的,但該網站需要能夠處理大量的評論和用戶可能有成千上萬的評論拇指,因爲它的一個簡單的行動來執行數據庫表將是巨大的很短的時間,這肯定會減慢頁面加載速度,因爲每當您查看帶有註釋的頁面時,它將查詢大量長表。如何阻止人們在網頁上豎起大拇指兩次

目前我保持在評論表中上下的大拇指計數,所以它查詢評論表,並將顯示數字。你是否建議我添加一個新的表,其中包含用戶標識和紀念日,如果有人豎起大拇指,所以我可以查詢該表,如果有一行其中用戶標識==登錄用戶和紀念==評論不允許?如果是這樣的想法,我已經在如何做到這一點,但正如我上面所說,它會導致一個巨大的桌子,肯定會減慢加載的頁面

+0

保持'count'你使用也存儲執行'拇指up'用戶,並確保不允許第二次。 –

+0

這是一個驗證,在大拇指向上/向下你必須檢查這個用戶是否已經投票或沒有相應地採取下一步... THUMBS UP .. !!!!!!!! – Pranav

+0

是的,您需要將其添加到數據庫。你不能記錄它沒有存儲信息的事實!您已經允許在您的網站上發表評論。想一個評論需要多少空間才能勝過讚美。是的,你的數據庫可能會變大,但解決方案是有一個數據庫設計良好,足夠強大的網站! – dan1111

回答

0

一種方法是當你加載評論也如果該用戶已經在每個投票上投了票,則加載該用戶,如果該用戶已經投票,則禁用該拇指向上按鈕。

0

你不應該存儲點擊一個簡單的計數器,但存儲實際事件

創建一個名爲「clicklog」什麼的一個單獨的表並添加字段,如useridcommentidIsThumbsUp。然後在你的AJAX頁面,您可以添加多達大拇指此表(IsThumbsUp是一個布爾值。真爲thumbsup和虛假的大拇指朝下。

然後而是採用類似SELECT comment, thumbsUp, thumbsDown你可以使用

SELECT id, comment, 
     (SELECT count(commentid) FROM clicklog WHERE commentID=id AND IsThumbsUp=1) AS thumbsUp, 
     (SELECT count(commentid) FROM clicklog WHERE commentID=id AND IsThumbsUp=0) AS thumbsDown 
FROM comments 

而且在你的AJAX頁面中,你可以檢查用戶是否投票過,如果他有,不允許,甚至更好,當他投票時,他可以將它改爲投票DOWN(將IsThumbsUp從1更改爲0)或反之亦然

只要確保每個用戶只有一個連接與紀念和用戶ID

此外,請確保您在clicklog中的字段上放置索引以快速獲取信息。我把主鍵上commentiduserid結合,然後一個單獨的指數commentidIsThumbsUp結合

相關問題