Php “如何创建Facebook风格”;例如;系统?

Php “如何创建Facebook风格”;例如;系统?,php,Php,我一直试图在网上找到一个Facebook风格的“喜欢”按钮的例子,但没有找到类似的例子。我想做的是,在用户可以按下的图像下方放置一个按钮。一旦按下,它将在数据库中为图像的记录增加一个值,然后通过将+1添加到现有数量来反映页面上的添加。我猜这需要PHP、SQL和jQuery来完成。问题是我不知道从哪里开始。我已经创建了一个PHP脚本,通过提供图像ID将其添加到特定图像的Like中。我已经创建了一个jQuery post按钮,该按钮可以发布到PHP并喜欢该图像。我一直坚持更新页面以反映类似情况 首先

我一直试图在网上找到一个Facebook风格的“喜欢”按钮的例子,但没有找到类似的例子。我想做的是,在用户可以按下的图像下方放置一个按钮。一旦按下,它将在数据库中为图像的记录增加一个值,然后通过将+1添加到现有数量来反映页面上的添加。我猜这需要PHP、SQL和jQuery来完成。问题是我不知道从哪里开始。我已经创建了一个PHP脚本,通过提供图像ID将其添加到特定图像的Like中。我已经创建了一个jQuery post按钮,该按钮可以发布到PHP并喜欢该图像。我一直坚持更新页面以反映类似情况

首先,我认为迄今为止我编写的代码完全是令人恶心的lol

这是到目前为止我所有的代码。 PHP输出Likes计数和Like按钮,以及用于添加的代码$info是“我的整个图像文件”表结果的数组:

Echo "<b>Likes:</b> ".$info['likes'] . "</span>";
Echo '<script src="http://code.jquery.com/jquery-latest.js"></script><script     type="text/javascript">function test() {$.post("http://stormstorm.com/like.php?   id='.$info['fileid'].'")</script>';
Echo '<br /><img onClick="test();" src="img/like.jpg"></p>';
喜欢的PHP工作得很好,我很高兴。但我认为,表达喜欢的东西很糟糕。问题是我有一个list.php,它将一个接一个地打印数据库的内容,以打印列出的所有图像。因此,它会反复打印脚本的相同副本,通常会将当前图像ID硬编码到日志中。我对此很陌生,但觉得这段代码很糟糕,而且它没有更新图像部分


我本想用Javascript简单地获取Likes元素并将其++化,但是,我突然想到了。我的列表将包含100多个相同的元素。你可能会发现我的做法可能不对,我希望有人能帮我解决这个问题。

我认为你的方向是正确的。您可以在php中的更新调用后返回like的数量,并让jquery更新like计数。我在下面添加了一些代码作为示例

HTML:

PHP:(*注意:我没有检查语法,但希望它的代码足以理解这个想法。)


看起来你已经记下了大概的想法,只是一个粗略的实现

您可能需要为每个图像指定计数器元素,并在按下按钮后更新内部内容

<img src="xxx.jpg">
<p>
    <a href="javascript:test({image_id});">Like</a> <span id="{image_id}_count">150</span>
</p>
在php中,除了将json编码的数组返回给js进行更新外,您将完全按照您所做的操作进行操作

$id = mysql_real_escape_string($_GET['id']);
mysql_query("UPDATE files SET likes=likes+1 WHERE fileid=".$id);
if(mysql_affected_rows() > 0)
{
    $sql = mysql_fetch_assoc(mysql_query("SELECT `likes` FROM `files` WHERE `fileid` = ".$id));

    echo json_encode(array('total' => $sql[0]['likes']));
}
请记住,这是一个非常糟糕的实现。真正的系统应该是一个不允许人们反复点击按钮来增加一些东西的系统。当然,根据您的需要,您应该通过登录来限制它,甚至记录与他们喜欢的文件相关的用户信息,而不仅仅是在数据库中增加一个数字。 因此,您将拥有一个关系表,该表存储每个类的信息。通过这种方式,您可以查询数据库,以确保用户在增加数字之前尚未喜欢该文件

希望这是有道理的

$(document).ready(function() {
  $('img.like_click').click(function() {
    var form = $(this).closest('form[name=like_form]');
    var id = $(form).find('input[name=id]').val();
    $.post("http://stormstorm.com/like.php?id='" + id + "', function(data) {
      $(form).find('span.like_count').html(data);
    });
});
$id = $_GET['id'];
mysql_query("UPDATE files SET likes=likes+1 WHERE fileid=".$id) 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'];
<img src="xxx.jpg">
<p>
    <a href="javascript:test({image_id});">Like</a> <span id="{image_id}_count">150</span>
</p>
function test(id)
{
    $.ajax({
        url: 'http://stormstorm.com/like.php',
        method: 'get',
        data: {id: id},
        dataType: json,
        success: function(data)
        {
             $('#' + id + '_count').html(data.total);
        }
    });
}
$id = mysql_real_escape_string($_GET['id']);
mysql_query("UPDATE files SET likes=likes+1 WHERE fileid=".$id);
if(mysql_affected_rows() > 0)
{
    $sql = mysql_fetch_assoc(mysql_query("SELECT `likes` FROM `files` WHERE `fileid` = ".$id));

    echo json_encode(array('total' => $sql[0]['likes']));
}