使用PHP创建一个简单的投票系统

时间:2014-02-24 20:16:44

标签: javascript php mysql

我正在用PHP做一个相当原始的投票系统。

MySQL PHP

while($row = mysql_fetch_array($query)): ?>
<div class="item" data-postid="<?php echo $row['id'] ?>" data-score="<?php echo $row['vote'] ?>">
  <div class="vote-span"><!-- voting-->

//
    <div class="vote" data-id="<?php echo $row['id']?>" data-action="up" title="Vote up">
//

      <img src="//placekitten.com/10/10"/>
    </div><!--vote up-->
    <div class="vote-score"><?php echo $row['vote'] ?></div>

//       
    <div class="vote" data-id="<?php echo $row['id']?>" data-action="down" title="Vote down">
//        

      <img src="//placekitten.com/g/10/10"/>
    </div><!--vote down-->
  </div>

  <div class="post"><!-- post data -->
    <h2><?php echo $row['name']?></h2>
    <p><?php echo $row['title'] ?></p>
  </div>
</div><!--item-->
<?php endwhile?>

我主要关注//之间的文字。首先,我设置了两个数据属性,希望稍后使用javascript;我将data-action设置为updown,以判断它是upvote还是downvote。我还将data-id属性设置为MySQL表中的当前行ID。

通过我的逻辑,我可以通过javascript jquery并在单击时执行PHP代码,并在MySQL中添加/减去正确行中的数字。

我或多或少尝试使用Javascript作为过期:

$('.vote').click(function(){
    if ($(this).data('action')=='up'){
        //PHP code here
    }
});

毋庸置疑,这不起作用,因为PHP和Javascript不是那样的,因为PHP是服务器端。接下来,我想我可以在我的Javascript条件中调用PHP函数 - 但似乎必须有一种更简单的方法来做我正在尝试的东西。我一直在看很多教程,它们要么过时,要么特定于其他项目。我在SO附近查了一下,发现了this question,但它的目的是允许IP有投票限制。 This question看起来与我正在做的类似,除非我无法弄清楚他们是如何设置的,因为他们没有如何调用函数

TL; DR我的问题是在div点击上调用PHP函数,将数据放入MySQL行的正确ID中。 AJAX似乎还有很长的路要走,但我不确定如何实现它。

2 个答案:

答案 0 :(得分:2)

你可以创建一个AJAX调用:

$('.vote').click(function () {
        $.ajax({
            type: "POST",
            url: "your-script.php",
            data: {
                id: $(this).data('id'),
                vote: $(this).data('action')
            }
        })
            .done(function (msg) {
            alert("Data Saved: " + msg);
        });
});

现在,您可以通过$_POST['id']$_POST['action']获取脚本中的值。

如果您想在PHP中创建它,您需要在上下按钮周围放置一个表单,并为提交按钮提供所需的文本/图像。

祝你好运!

答案 1 :(得分:1)

你需要使用AJAX来实现这个功能......你很接近,在你的处理程序中添加一个ajax调用:

$('.vote').click(function(){
    if ($(this).data('action')=='up'){
        //jquery ajax call
        $.ajax({
            url: "../pathToPhpFile/phpFile.php",
            data: { dataToBeSentToServer: someData },
            success: function(data){
                //var data is data passed back from PHP script
                $("#idOfDiv").html(data.html);
            }
        });
    }
});

https://api.jquery.com/jQuery.ajax/

我还要补充一点,你应该将PDO用于你的mysql连接。

http://us3.php.net/PDO