【问题标题】:Creating a Simple Voting System with PHP使用 PHP 创建一个简单的投票系统
【发布时间】:2014-03-26 17:22:45
【问题描述】:

我正在用 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 以判断它是赞成票还是反对票。我还将 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 似乎是要走的路,但我不确定如何实现它。

【问题讨论】:

  • 您需要研究 AJAX,以便在 Javascript 事件(如单击)上向 PHP 脚本发出请求,传入数据,然后获取并显示响应。
  • 如你所料,javascript(客户端/浏览器)不能直接执行php,因为它是服务器端的。基本上你需要使用 ajax (javascript) 向执行你想要的 php 脚本发出请求
  • 我认为 AJAX 只是用于 PHP 的异步内容,我还可以将特定于每一列的变量传递给那个 PHP 吗?我该如何设置?

标签: javascript php mysql


【解决方案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

【讨论】:

    【解决方案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 中创建它,您必须在向上和向下按钮周围放置一个表单,并为提交按钮提供所需的文本/图像。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 2013-05-27
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多