1

我正在制作一个博客类型的网页,其中的 div 有一个“喜欢”和“不喜欢”按钮,上面的评级是一个 mysql 查询喜欢/(喜欢+不喜欢)。当用户点击喜欢或不喜欢时,我想将他们的投票添加到数据库中,并在不重新加载页面的情况下动态更改评分值。这是html的一小段,我几乎没有使用过javascript,所以任何帮助都会很棒。

<div class="narrow_right_container">
   <?php 
    $popularity = get_popularity($row);
   ?>
   <div class="yellow_bg">Rating:  <?php echo $popularity . "%"; ?></div>
   <div style="margin-left:2px;">
    <div class="dislike">
       <a href="#"><img src="ui_images/dislike.png"/></a>
       <span>Dislike</span>
    </div>
    <div class="like">
       <a href="#"><img src="ui_images/like.png" /></a>
       <span>Like</span>
        </div>
   </div>
</div>
4

4 回答 4

1

您将不得不使用 ajax 来完成此操作。无法通过 javascript 更改 PHP 变量。

您将不得不调用将处理数据库工作的 Ajax 函数,在其完成之后,您将不得不使用 javascript 更新计数。这将暗示计数已更新,而数据库中的计数也将更新(来自 Ajax)

下面是一个很好的例子来说明如何做到这一点:

Example Code
Live Demo

于 2012-05-07T18:26:10.547 回答
1

您实际上不会更改 PHP 值——一旦页面输出到浏览器,考虑 PHP 消失了——你不能与它交互,因为它在服务器上。相反,请考虑与浏览器中的文档进行交互。

最好的方法是对服务器端脚本进行 ajax 调用。该服务器端脚本可以向数据库提交喜欢或不喜欢的内容,然后返回新评级,您可以使用 javascript 插入新评级来代替旧评级。

您可能想查看一些关于 javascript 和 ajax 的教程,因为您似乎对教程的需求比对特定问题的需求更普遍。换句话说,如果您在一般主题上填补知识空白,您将能够很容易地解决您的具体问题。

于 2012-05-07T18:27:44.057 回答
1

您将需要创建一些 PHP 代码来处理保存到服务器端的数据库。您会将喜欢/不喜欢的值信息发布到此服务器端脚本。如果可能,我会使用jQuery 的 AJAX助手将数据发布到您刚刚创建的 PHP 页面。

像这样的东西:

$.ajax({
  url: "whatever.php",
  type: "POST",
  data: {Like: true},
  success: function(data){ /* update view */}
});
于 2012-05-07T18:31:41.363 回答
0
$('.like').click(function(){
   rate(1);
})
$('.dislike').click(function(){
   rate(-1);
})

function rate(_val){
$.ajax({
  url: 'ajax/rate.php?val='+_val,
  success: function(data) {
    alert('Rate was performed.');
    $(".narrow_right_container").find(".yellow_bg").append("Rating: "+data+"%");
  }
});
}

rate.php

if(isset($_GET['val'])){
  $sql = "UPDATE.........."; //do an update to your rate table
  echo get_popularity($row); //return rating to ajax
}
于 2012-05-07T18:33:06.317 回答