2012-06-25 62 views
0

Like按鈕的表如何確保我的喜歡按鈕僅由用戶按下一次?

  • LIKE_ID(唯一喜歡的ID爲每一個職位)
  • 喜歡(次有人點擊喜歡按鈕)
  • POST_ID(對應於崗位表的POST_ID)

單獨的帖子表具有來自上面的對於每個帖子唯一的POST_ID

對於用戶存在單獨的用戶表

因此,當用戶點擊類似按鈕時,它會向Like表添加+1,其中post_id是他們喜歡的任何帖子。

JavaScript文件

$(document).ready(function() { 
$('img.like_click').click(function() { 
var form = $(this).closest('form[name=like_form]'); 
var lid = $(form).find('input[name=lid]').val(); 
$.post("like.php?lid='" + lid + "', function(data) { 
$(form).find('span.like_count').html(data); 
}); 
}); 

like.php文件

$lid = $_GET['lid']; 
mysql_query("UPDATE tbl_likes SET likes=likes+1 WHERE like_id=".$lid) or  die(mysql_error()); 
$result = mysql_query("SELECT likes from files where fileid=" . $id) or die(mysql_error()); 
$row = mysql_fetch_assoc($result); 
echo $row['likes']; 

我無法弄清楚如何從喜歡一遍又一遍地停止用戶。我在網絡上發現了類似腳本的Facebook風格,它阻止了人們這樣做,但它們基於IP地址(如果您未登錄,您不能喜歡我的帖子),並且這些代碼讓我感到困惑,因爲我不是jquery的傢伙。我仍然試圖弄清楚如何使用上面的代碼正確顯示像按鈕,但最困難的部分是限制多個喜歡,這一直困擾着我。任何人都可以幫忙謝謝

+0

你跟蹤哪些職位每個用戶已經喜歡?我沒有看到你描述你的桌子的方式。如果你這樣做,使用它來檢查和禁用按鈕,當你需要。如果不是,可以嘗試一個單獨的'user_id'和'post_id'表。如果用戶喜歡某個帖子,請添加到此表。 – rgin

+0

使用HiddenField。當用戶點擊按鈕時,設置它的值。稍後,您檢查隱藏域值 –

+0

您想單擊一次並刷新頁面,然後再次單擊?或者只有一次點擊即使刷新? – coolguy

回答

1

你說用戶不能喜歡你的帖子,除非他們已經登錄。所以在你的情況下,你讓自己很容易。你只需要跟蹤哪些用戶喜歡哪些帖子來防止重複。

在類似的表中,刪除likes列。我們會在稍後計算。添加user_id列,以便您可以跟蹤哪些用戶喜歡哪些帖子。然後在post_iduser_id上添加合併的primary_key以防止重複。

然後構造你的查詢,像這樣:

$q = mysql_query("INSERT INTO tbl_likes (user_id, post_id) VALUES ('{$user_id}', {$post_id})"); 

if($q === false) { 
    // query didn't work, probably a duplicate 
} 
else { 
    // return a success etc 
} 

如果你想獲得喜歡的數量,使用數量的查詢,像這樣:

SELECT post_id, count(*) as c FROM tbl_likes WHERE post_id = $post_id; 
+0

謝謝。這是有道理的 – user1470755