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