Javascript/PHP倒计时器在某个时间停止?

标签 javascript php mysql

我有一个倒计时器的代码。它基本上是 PHP/Javascript 倒计时器的组合,它将从 Mysql 表/字段获取 $end_date

问题是它会在某个时间自动停止(这是不需要的)。

例如:我在mysql数据库中将$end_date设置为September 19 2013 11:30:00 AM GMT

倒计时开始并正常工作,并开始按预期倒计时。但是,当倒计时器到达 September 19 2013 13:00:00 PM GMT 时,它将停止并显示 Times Up 消息!基本上,一旦 $end_date 更改为 13:00:00 PM,它就会停止工作或倒计时。

我在代码中看不到任何会导致此问题的内容。除了这一行:

if ($now < $exp_date ) {
?>

但同样,这一行只告诉脚本何时开始计数,据我所知,只要计时器尚未到达$end_date,它就不应该停止倒计时器。 。或者我错过了什么?

这是我的代码:

<?php 
error_reporting(E_ALL);
ini_set('display_errors', '1');
?>
<?php date_default_timezone_set('GMT'); ?>
<?php
session_start();
// Run a select query to get my letest 6 items
// Connect to the MySQL database  
include "config/connect.php";
$dynamicList = "";
$sql = "SELECT * FROM item ORDER BY id";
$query = mysqli_query($db_conx, $sql);
$productCount = mysqli_num_rows($query); // count the output amount
if ($productCount > 0) {
    while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){ 
             $id = $row["id"];
             $product_name = $row["product_name"];
             $date_added = date("Y-m-d", strtotime($row["date_added"]));
             $end_date = date("F d Y H:i:s A T", strtotime($row["end_date"]));
             $price = $row["price"];
             $dynamicList .= '<div>' . $end_date . '
      </div>';
    }
} else {
    $dynamicList = "No Records";
}
?>

<?php
$date = $end_date;
$exp_date = strtotime($date);
$now = time();

if ($now < $exp_date ) {
?>
<script>
// Count down milliseconds = server_end - server_now = client_end - client_now
var server_end = <?php echo $exp_date; ?> * 1000;
var server_now = <?php echo time(); ?> * 1000;
var client_now = new Date().getTime();
var end = server_end - server_now + client_now; // this is the real end time

var _second = 1000;
var _minute = _second * 60;
var _hour = _minute * 60;
var _day = _hour *24
var timer;

function showRemaining()
{
    var now = new Date();
    var distance = end - now;
    if (distance < 0 ) {
       clearInterval( timer );
       document.getElementById('countdown').innerHTML = 'EXPIRED!';

       return;
    }
    var days = Math.floor(distance / _day);
    var hours = Math.floor( (distance % _day ) / _hour );
    var minutes = Math.floor( (distance % _hour) / _minute );
    var seconds = Math.floor( (distance % _minute) / _second );

    var countdown = document.getElementById('countdown');
    countdown.innerHTML = '';
   if (days) {
        countdown.innerHTML += 'Days: ' + days + '<br />';
    }
    countdown.innerHTML += 'Hours: ' + hours+ '<br />';
    countdown.innerHTML += 'Minutes: ' + minutes+ '<br />';
    countdown.innerHTML += 'Seconds: ' + seconds+ '<br />';
}

timer = setInterval(showRemaining, 1000);
</script>
<?php
} else {
    echo "Times Up";
}
?>
<div id="countdown"></div>

任何帮助将不胜感激。

最佳答案

13:00:00 PM 不是有效时间。 AMPM 用于指示时间位于 12 小时周期的哪一边。从逻辑上讲,您不能说您位于时钟 12 小时一侧的第 13 个小时。

编辑:为了清楚起见:13:00 == 下午 1 点,13:00 PM == 什么也没有。

关于Javascript/PHP倒计时器在某个时间停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18871532/

相关文章:

javascript - 使用 2 个下拉列表创建 2 个并排的表行来比较数据 - JSON

javascript - 是否可以通过iOS应用程序访问rails数据库?

php - 我在 php 中的正则表达式无法正常工作,但在 RegexPal.com 上可以正常工作

mysql - 如何创建具有一列作为其他列总和的表?

javascript - 在 meteor js 的同一页面上打开多个物化模式

javascript - TinyMCE 和 wiris 插件 - 保存并加载后,方程不显示(显示丢失的图像)

php - 如何在 symfony2 中覆盖 sonata admin bundle 的 css

mysql - 插入没有表格的查询symfony 2

mysql - prestashop 1.6 中具有过滤天数的休眠用户

javascript - 即使我 "require"导入,也不支持 'm using "”