【问题标题】:Countdown timer PHP error倒数计时器 PHP 错误
【发布时间】:2013-01-06 21:34:35
【问题描述】:

我正在尝试制作一个倒数计时器,它显示产品过期还有多少天,当有 0 天时,我想显示一条消息说它已过期:

<?php
$target =  mktime(0, 0, 0, 1, 7, 2013) ;
$today = time () ;
$difference =($target-$today) ;
$days =(int) ($difference/86400) ;
if ($today == $target)
{
print "this product has expired";
}
else
{
print "This product expires in $days days";
}
?>

当您访问该页面时,它始终显示第二条消息,即使今天与目标日期相同。

如果可能的话,你能告诉我如何在不重新加载页面的情况下显示分钟和秒吗?我还想在还剩 0 天/分钟时更新 MySQL 数据库,这可能吗?不需要有开始/停止按钮。

【问题讨论】:

  • 查看广告下方的右栏。
  • 尝试 strtotime("2013-07-01");而不是 mktime
  • 使用 strcmp() 比较两个字符串

标签: php mysql database timer countdown


【解决方案1】:

我认为您已经找到了解决方案。但是,如果有人仍在寻找此解决方案,那么这可能会有所帮助。在这个解决方案中,我们可以分割天、小时、分钟、秒。

Reverse timer from javascript:

var target_date = new Date('Aug 01 2014 20:47:00').getTime();
    var days, hours, minutes, seconds;
    var countdown = document.getElementById('timeremaining');
    var countdownTimer = setInterval(function () {
        var current_date = new Date().getTime();
        var seconds_left = (target_date - current_date) / 1000;

        days = parseInt(seconds_left / 86400);
        seconds_left = seconds_left % 86400;

        hours = parseInt(seconds_left / 3600);
        seconds_left = seconds_left % 3600;
        minutes = parseInt(seconds_left / 60);
        seconds = parseInt(seconds_left % 60);

        if(days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0 )
        {
           document.getElementById('timeremaining').innerHTML = '';
           clearInterval(countdownTimer);              
        }
        else
        {       
            if(days>0)
              {
                 days= days+'d,';
              } 
              else
              {
                 days='';
              }            
            countdown.innerHTML ='( ' + days + checkTime(hours) + ':'+ checkTime(minutes) + ':' + checkTime(seconds) +' remaining)';    
        }
    }, 1000);

    function checkTime(i) {
        if (i < 10) {i = '0' + i};  
        return i;
    }      

【讨论】:

    【解决方案2】:

    这里有两个问题。首先是 $today 和 $target 都以秒为单位。

    这意味着除非您在与目标完全相同的时间访问该页面,否则您不会看到该消息。

    这也意味着过期后的任何时间也将起作用,这可能不是您想要的。尝试使用:

    if($today > $target)
    

    要显示分钟和秒,您应该查看可以倒计时的javascript。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多