我想使用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>
上面提到的代码只返回第一篇文章的数据。我想在所有帖子中显示喜欢的数量。
答案 0 :(得分:1)
您只获得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代码中随时将其从那里取出,而不是从客户端发送。
答案 1 :(得分:0)
您只需获取一行,您需要获取所有这些内容:
@user
你还需要一些方法来明确分离这些价值......