【问题标题】:How to create a countdown timer and run a sql query with PHP when it is completed?如何创建倒数计时器并在完成后使用 PHP 运行 sql 查询?
【发布时间】:2011-08-17 18:19:06
【问题描述】:

我正在使用以下 jQuery 脚本来倒计时直到 $end 的时间,并在发生这种情况时显示已完成。

但是,当您更改计算机上的时间时,倒计时也会更改。我想到的就是 Groupon 的倒计时。

我的问题是如何更改无法更改的时间源,也许是服务器的时间?当计时器达到 0 时,如何使用 PHP 运行 SQL 查询?

我是不是完全走错路了?

谢谢。

<?php $end = 'september 1, 2011 19:24'; ?>

<script type="text/javascript">
$(document).ready(function() {
    $("#time").countdown({
        date: "<?=$end?>",
        onComplete: function( event ){
            $(this).html("<i>Completed</i>");
        },
        leadingZero: true
    });
});
</script>

<p id="time" class="time"></p>

【问题讨论】:

  • 倒计时脚本在哪里/是什么?
  • 解释你打算在计时器达到 0 时运行的查询。
  • @Dan Grossman 请你看看我在stackoverflow.com/questions/7101267/…的新问题
  • @Nikolai 你也没有回答这个查询是什么。
  • @Nikolai 没有理由这样做。该行已完成的事实是已知的,因为日期小于现在(或“完成日期”)。将行标记为已完成的单独列将是数据重复。您可以通过选择具有未来日期的行来选择“未完成”行。您可以通过选择具有旧日期的行来选择“完成”行。无需标记任何东西!

标签: php jquery mysql


【解决方案1】:

这可能是目前最糟糕的想法,但也许您可以简单地计算一次从现在到结束日期的时间,找到您想要的间隔数,然后调用setInterval 并手动递减该值。

又名:

var initialTime = new Date();
var endTime = /* Your Time when the thing is over */

var intervalId = setInterval(function()
{
    // Every second, decrement the counter by 1 second. 

    // if counter is done, show end and then
    clearInterval(intervalId);
}, 1000);

【讨论】:

  • 我应该改用 PHP 脚本吗?
  • 你可以完全在 JavaScript 中做到这一点。
  • 你有什么例子吗?我担心的是,当计时器达到 0 时,我必须运行 sql 查询...
  • 当计时器达到 0 时,您不需要运行查询。您认为这样做,但无论出于何种原因,您认为在计时器达到 0 时需要运行该查询实际上并不需要发生。
【解决方案2】:

在大多数情况下,使用 JavaScript 倒数计时器是可以的,但您不能依靠客户端脚本来“加速”计时器。用户总是可以通过更改系统时钟、手动弄乱 JavaScript 变量等等来欺骗计时器。

从字里行间看,您似乎想做一些事情,例如在产品可用或报价到期时在数据库中添加注释。如果是这样,您应该绝对在服务器端执行此操作,尤其是在即使用户离开页面并且可能仅在截止日期之后才返回的情况下也必须运行查询时。或许重新思考一下这个逻辑:与其在定时器用完的时候在数据库中做记录,不如在数据库中预先设置过期时间,以标记更改何时生效。

另一种可能性是当 JavaScript 计时器达到目标时,页面会调用服务器。然后服务器检查是否在正确的时间进行了调用。如果是这样,运行 SQL 查询,否则告诉 JavaScript 它应该保持计时器运行。 (例如,如果服务器认为调用提前了 10 分钟,则向 JavaScript 返回数据,说明它应该将计时器重置为 10 分钟,然后重试。)

【讨论】:

    【解决方案3】:

    你问的是不可能的。您可以使用setTimeout,它将在特定的毫秒数后触发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多