我想使用ajax和PHP获取每个帖子的点赞总数。
这是我的ajax.php
文件
<?php
include_once "../config.php";
$user_id=$_POST["user_id"];
$sale_phone_id=$_POST["sale_phone_id"];
$query2=mysqli_query($conn,"SELECT count(id) as total_likes FROM likes where status='1' AND sale_phones_id='$sale_phone_id'");
$row=mysqli_fetch_assoc($query2);
echo $row["total_likes"];
?>
这是我的JS
<script type="text/javascript">
$(document).ready(function(){
var user_id=1;
var sale_phone_id=document.getElementById('demo_demo').getAttribute('data-value');
//var message=$("#message").val();
$.ajax({
type:"post",
url:"ajax.php",
data:"user_id="+user_id+"&sale_phone_id="+sale_phone_id,
success:function(data){
$("#thumbs_up").html(data);
}
});
});
</script>
上面提到的代码仅返回我第一篇文章的数据。我想显示所有帖子的喜欢人数。
最佳答案
好吧,您只获得1条记录,因为您只发送了1条sale_phone_id
,并且在需要查找特定帖子点赞次数的特定情况下,您的代码很有用。
根据我对您问题的理解,您需要计算每个销售电话上的点赞次数。所以必须加入您的
查询(假设将sales_phone作为您的其他表名);下面给出的查询可以满足您的要求
SELECT *, count(t2.id) as total_likes
FROM sale_phones t1 LEFT JOIN likes t2
ON t2.sale_phones_id=sale_phones_id
WHERE status='1' AND sale_phones_id='$sale_phone_id'
这样,您将获得所有
sales_phones
及其喜欢的次数。现在,一旦获得JSON格式的结果(响应ajax调用),jQuery逻辑便是另一个问题。
好吧,可以通过多种方式实现。
最简单的方法是将id属性与前缀一起使用。
在遍历
sale_phones
并创建帖子的地方,您可以为每个帖子分配一个数据id
,例如<?php foreach($sale_phones as $sp): ?>
<div id="sp_<?php echo $sp->id; ?>" >
<?php echo $sp->phone_name;?>
<span class="likes"></span>
</div>
<?php endforeach; ?>
并在您的jquery ajax请求函数中
$.ajax({
type:"post",
url:"ajax.php",
success:function(data){
// assuming that your data is returning in JSON format
var response = JSON.parse(data);
$('#sp_'+response.sales_phone_id).children('.likes').text(response.total_likes);
}
});
那只是实现您所需的一个粗略草图。让我知道我是否可以进一步提供帮助。
顺便说一句,永远不要从客户端发送
user_id
,这是非常不安全的。用户可以通过检查元素或其他方式更改ID,并且可以查看任何用户的记录作为响应。解决方案是将user_id
保留在会话中,并在PHP代码中需要它时从那里获取它,而不是从客户端发送它。