我正在尝试创建类似于Facebook LIKE按钮的系统。我想让用户喜欢图片,但只让他们喜欢它一次。在他们喜欢之后,他们应该只能与之不同。
我目前的代码是:
<?php
$id = $_GET["picID"];
include 'db.php';
$colID = str_replace('_', ' ', $_GET['picID']);
$colID = mysql_escape_string($picID);
$sql = "SELECT * FROM picture WHERE id = $id";
$result = mysql_query($sql) or die (mysql_error()."<br/>".sql);
$row = mysql_fetch_array($result);
$update = "UPDATE picture SET likes=likes+1 WHERE id='$id'";
mysql_query($update) or die (mysql_error()."<br/>".update);
echo "Thank you";
?>
目前,我使用超链接触发“赞”动作:
<a href='like.php?colID=$row[id]'>Like</a>
最后我想将其更改为AJAX,这样用户只需单击Like(如在Facebook上),无需更改页面。我还在读如何做到这一点。这个任务有一个特定的名字吗?或者有人能告诉我演示我能做到吗?
修改
用户需要登录才能欣赏图片。我有两个未关联的表格,User
和Pictures
。目前,用户可以继续点击“赞”,并在类似列中添加1。
答案 0 :(得分:0)
一种方法是创建一个包含图片ID列和用户ID的表,以显示某人喜欢某张特定图片。如果表中列出了具有图片ID的用户ID,那么您不应该允许他们喜欢图片,因为他们已经喜欢它。您可以使用对数据库的查询执行此检查,该查询将返回1或0的计数。
答案 1 :(得分:0)
在数据库中创建一个字符串列,以指示谁喜欢该图片。
如果用户已登录(因此可以投票),请通过对其进行爆炸并循环来搜索字符串中的姓名。然后从字符串中删除他的名字或添加它。 请注意,您还可以使用序列化将数组直接保存到数据库: http://php.net/manual/en/function.serialize.php
对于快速加载,您可以使用其他列,其中包含第一列的名称计数。