我想使用 ajax 和 PHP 获取每个帖子数据的点赞总数

I want to fetch total number of likes against each post data using ajax and PHP

本文关键字:数据 ajax 获取 PHP      更新时间:2023-09-26

我想使用 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代码中需要时从那里获取它,而不是从客户端发送它。

你只获取一行,你需要获取所有行:

while (false != $row = mysqli_fetch_assoc($query2))
    echo $row["total_likes"];

您还需要一些方法来显然分离值......