【问题标题】:SELECT from mysql database on javascript call在 javascript 调用中从 mysql 数据库中选择
【发布时间】:2012-05-05 03:19:27
【问题描述】:

我有一个用 PHP 和 Javascript/jQuery 构建的小型 Web 应用程序。

该应用程序包含一个随机数生成器,当它落在数字 4 时,用户获胜。

但是,奖品是从数据库中提取的,并且每天会赢得 5 次奖品。用户无法获胜。

一旦用户获胜,奖品将更新为“排队”,直到他们填写表格并领取奖品。然后从可用奖品中取出。

如果用户刷新应用程序,这一切都可以正常工作。但是,如果一个用户开始玩应用程序并且另一个用户获胜,那么应用程序将不会更新,除非它被刷新,因为 PHP 是服务器端的。

我有一个 JavaScript 函数 OnStart。因此,如果我可以在这里执行 SQL 查询,那么每次用户掷骰子时都会发生这种情况。

如何从 jquery 函数运行 php 语句?

如果有帮助的话,下面是声明:

$result = mysql_query("SELECT * FROM prizes WHERE dateavailable='$todayDate' AND queue='0' AND won='0' ORDER BY id ASC LIMIT 1");

while($row = mysql_fetch_array($result))

{   
    $prize = $row['prize'];
}

谢谢

编辑:

那么我可以在一个单独的文件中使用这样的东西吗?

<script type="text/javascript">
  function performAjaxSubmission() {
    $.ajax({
      url: 'file.php',
      method: 'POST',
      data: {
        action: 'save',
        arg1: 'val1',
        arg2: 'val2'
      },
      success: function() {
        alert("success!");
      }
    });
    return false; // <--- important, prevents the link's href (hash in this example) from executing.
  }

  jQuery(document).ready(function() {
    $("#linkToClick").click(performAjaxSubmission);
  });
</script>

【问题讨论】:

  • 你需要研究一下 jQuery 的 AJAX 功能。
  • 不要忘记保护您的数据免受 SQL 注入。
  • 那么如果用户赢了,他还能继续玩并再次赢吗?
  • 是的。但他不能两次领奖。

标签: php javascript jquery mysql ajax


【解决方案1】:

将发布的代码保存在一个 php 文件中,我们称之为prizes_available.php。该文件还应该输出奖品是否可用,因此创建结果对象并为其赋值:

$result = new stdclass();
$result->prizes_available = $prize != null;
echo json_encode($result);

如果你在浏览器中调用这个脚本,它会输出如下内容:

{ prizess_available: true }

使用 jQuery,您可以轻松地将这个字符串再次转换为对象:

$.getJSON('prizes_available.php', function(result)  {
    if (!result.prizes_available) {
        alert('no more prizes');
    }
});

【讨论】:

  • 谢谢!这很好用。有没有办法可以将 SELECT 查询中的变量传递回我进行调用的页面?
  • 是的,您可以将它们全部添加到一个数组中,然后将该数组分配给$result 对象。
  • 我设法解决了这个问题。感谢您的所有帮助。
【解决方案2】:

你必须使用 AJAX,jQuery 包含一些易于使用的函数来处理 AJAX。

使用很简单,你可以在docs.jquery.com阅读到

如果您想将一些数组传递给您的 js 脚本,请查找 JSON 函数(jQuery 中的 $.getJSON,PHP 中的 json_decode / json_encode

【讨论】:

  • 我已对问题进行了编辑。我可以使用类似的东西吗?
  • 是的,我就是你需要的东西。尝试根据您的需要进行更改,如果它不起作用,我(我们)会帮助您。 (对不起我的英语,希望你能理解我:)
猜你喜欢
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多