2011-06-21 7 views
0

私はオンライン試験に取り組んでいます。検査期間は、mysqlによって取得されます(分単位)。私はカウントダウン時間をページの上部に表示したい。カウントダウンタイマー-php + mysql + js

たびに新たな疑問が..theページのgetリフレッシュを表示し、最初から再度リセット..timerと、現在..私は

http://javascript.internet.com/time-date/countdown-timer.html

を使用していますが、主な問題です。

私は主な問題はどこですか?

または他の例をお伝えしたい場合は、タイマーがリセットされますので

おかげ

答えて

2

Time left: 
<span class="timer" data-end="<?php 
    echo date(DateTime::RFC1123, $_SESSION['test_will_end_by']); 
?>"></span> 

ページ上のすべてのタイマーを開始するには、あなたのjQueryのDOM対応のハンドラにこのコードを追加します。

$('.timer').each(function() { 
    var target = new Date($(this).data('end')), update, $this = $(this); 
    (update = function() { 
     var now = new Date(); 
     $this.text((new Date(target - now)).toUTCString().split(' ')[4]); 
     if (Math.floor((target - now)/1000) == 0) return; // timer stops 
     setTimeout(update, 1000); 
    })(); 
}); 
1

ページを更新するたびに、JavaScriptコードは、再び実行されます。この問題を解決するには、Ajaxというページを更新せずにコンテンツを取得します。

+0

ことができますしてくださいどのようなコードやリンクがあれば、私には分かりますか? – PHP

1

フォームまたはページbeforeunloadイベントを提出を使ってクッキーに現在の値を格納することができます。新しいページが読み込まれたら、残りの時間を取得し、カウントダウンを続けます。これにより、ネットワークの待ち時間も許容されます。

ユーザーは、Cookieの値にアクセスして変更できる可能性があることに注意してください。

1

質問の開始時間をセッションに保存すると、ページが更新されるとサーバーとのセッション開始時間の差がWebページに表示されます。あなたがAJAXを使用せずにクライアント側のJavaScriptコードから行うことができるインクリメント部分。あなたがHTMLから自分のクライアント側のスクリプトにそれを提供する場合、次に

<?php 
if (empty($_SESSION['test_will_end_by'])) { 
    $_SESSION['test_will_end_by'] = time() + $test_duration_in_seconds; 
} 
?> 

:あなたは、サーバー側で正確なテスト終了時間を計算し、セッションにそれを保存する必要がテストを実行する前に

関連する問題