Php 单击图像以递增计数器+;存储到服务器,以便所有用户都能看到它被喜欢了多少次。 这是一个很难回答的问题,因为我没有很多后端知识,所以如果我的行话不符合标准,请原谅我。

Php 单击图像以递增计数器+;存储到服务器,以便所有用户都能看到它被喜欢了多少次。 这是一个很难回答的问题,因为我没有很多后端知识,所以如果我的行话不符合标准,请原谅我。,php,jquery,ajax,Php,Jquery,Ajax,基本上,我有一个图像库,我需要用户能够“喜欢”一个图像,并有一个计数器,然后存储到服务器。所以,如果说50个用户喜欢一个特定的图像,它会在该图像上向所有用户显示“50” 我假设php和ajax是这里最好的选择 任何帮助都将不胜感激。好的,这里是一个非常简单的类似机制的示例 注: 本例使用jQuery 为了简单起见,没有数据库,因为db使用一个简单的json存储 没有“不一样”的功能,它总是增加喜欢 首先,我们需要我们的图库标记: <ul> <li><a

基本上,我有一个图像库,我需要用户能够“喜欢”一个图像,并有一个计数器,然后存储到服务器。所以,如果说50个用户喜欢一个特定的图像,它会在该图像上向所有用户显示“50”

我假设php和ajax是这里最好的选择


任何帮助都将不胜感激。

好的,这里是一个非常简单的类似机制的示例

注:

  • 本例使用jQuery
  • 为了简单起见,没有数据库,因为db使用一个简单的json存储
  • 没有“不一样”的功能,它总是增加喜欢
首先,我们需要我们的图库标记:

<ul>
    <li><a class="likeLink" data-imageid="1"><img src="https://dummyimage.com/100x100/000/fff" /><span class="likes">0</span></a></li>
    <li><a class="likeLink" data-imageid="2"><img src="https://dummyimage.com/100x100/000/fff" /><span class="likes">0</span></a></li>
    <li><a class="likeLink" data-imageid="3"><img src="https://dummyimage.com/100x100/000/fff" /><span class="likes">0</span></a></li>
    <li><a class="likeLink" data-imageid="4"><img src="https://dummyimage.com/100x100/000/fff" /><span class="likes">0</span></a></li>
</ul>
接下来我们需要一点JavaScript:

$(document).ready(function(){

    // Initial loading likes for images
    $.ajax({ 
        type: 'GET', 
        url: 'setlike.php?getAllLikes', 
        success: function (data) { 
            $.each(data.images, function(index, value){
                $('.likeLink[data-imageid="'+ value.imageId +'"]').find('.likes').html(value.likes);
            });
        }
    });

    // Set a like for an image
    $('.likeLink').on('click', function(){

        var imageId = $(this).attr('data-imageid');

        $.ajax({ 
            type: 'POST', 
            url: 'setlike.php', 
            data: { imageId: imageId }, 
            success: function (data) { 
                $('.likeLink[data-imageid="'+ data.imageId +'"]').find('.likes').html(data.likes);
            }
        });
    })
})
最后但并非最不重要的一点是,我们需要一个处理ajax请求的php脚本:

header('Content-Type: application/json');
$data = file_get_contents('store.json'); // In this file is our json object



if(isset($_GET['getAllLikes'])) {
    echo $data;
}

if(isset($_POST['imageId']))
{
    $jsonObj = json_decode($data);
    $likedImg = null;
    foreach($jsonObj->images as $v)
    {
        if($v->imageId == $_POST['imageId'])
        {
            $v->likes++;
            $likedImg = $v;
        }
    }

    file_put_contents('store.json', json_encode($jsonObj));
    echo json_encode($likedImg);
}

当有人点击像这样的
时,它会向服务器发送一个ajax请求,您需要更新数据库字段,比如total_like之类的内容。您认为什么是“用户”?它是你网站上的一个登录用户还是仅仅是一个客人?@Shahariazam是的,我有点了解它背后的一般流程,但是我担心实现它是一个完全不同的故事。你推荐我使用哪种数据库?@mr.void他们不需要登录,所以只要有访问者访问该网站就可以了。嘿,这太棒了。我想我已经接近成功了。它存储了喜欢的数量,但页面上的实际数量没有更新?知道那是什么吗?检查选择器是否匹配:$('.likeLink[data imageid=“'+data.imageid+''“])。查找('.likes').html(data.likes);我觉得很对,但也许我看得太久了。这是我试图处理的html:
0
这是JS:
$('.likeLink[data-imageid=“'+data.imageid+'”)).find('.likes').html(data.likes)好,然后检查data.imageId是否未定义。给出的初始示例是有效的。嗯,我该如何检查它呢?我在控制台中没有看到任何错误。
header('Content-Type: application/json');
$data = file_get_contents('store.json'); // In this file is our json object



if(isset($_GET['getAllLikes'])) {
    echo $data;
}

if(isset($_POST['imageId']))
{
    $jsonObj = json_decode($data);
    $likedImg = null;
    foreach($jsonObj->images as $v)
    {
        if($v->imageId == $_POST['imageId'])
        {
            $v->likes++;
            $likedImg = $v;
        }
    }

    file_put_contents('store.json', json_encode($jsonObj));
    echo json_encode($likedImg);
}