0

製品の有効期限が切れるまでの日数を表示するカウントダウンタイマーを作成しようとしていますが、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";
}
?>

このページにアクセスすると、今日が目標日と同じ日付であっても、常に2番目のメッセージが表示されます。

可能であれば、ページをリロードせずに分と秒を表示する方法を教えてください。残り0日/分でMySQLデータベースも更新したいのですが、可能ですか?開始/停止ボタンは必要ありません。

4

2 に答える 2

1

ここには2つの問題があります。1つ目は、$todayと$targetの両方が秒単位で測定されることです。

これは、ターゲットとまったく同じ秒でページにアクセスしない限り、メッセージが表示されないことを意味します。

これはまた、有効期限を過ぎても機能することを意味しますが、これはおそらくあなたが望むものではありません。使用してみてください:

if($today > $target)

分と秒を表示するには、時間をカウントダウンできるjavascriptを調べる必要があります。

于 2013-01-06T21:53:44.077 に答える
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;
    }      
于 2014-08-02T18:23:13.520 に答える