我想使用ajax和PHP

时间:2016-03-27 18:57:53

标签: javascript php jquery ajax

我想使用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>

上面提到的代码只返回第一篇文章的数据。我想在所有帖子中显示喜欢的数量。

2 个答案:

答案 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

你还需要一些方法来明确分离这些价值......