2013-09-18 2 views
0

У меня есть этот код для таймера обратного отсчета. в основном это комбинация таймера обратного отсчета PHP/Javascript, который получит $end_date из таблицы/поля Mysql.Таймер обратного отсчета Javascript/PHP останавливается в определенное время?

Проблема заключается в том, что она будет автоматически остановлена ​​(что нежелательно) в определенное время.

Например: Я установил $end_date в September 19 2013 11:30:00 AM GMT в базу данных mysql.

обратный отсчет начинается и работает нормально и начинает отсчет, как следует. Однако, когда таймер обратного отсчета достигнет 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> 

любая помощь будет принята с благодарностью.

+9

Нет такого времени, как 13 часов. – JJJ

+0

@ Джухана, ты уверен? потому что я повторяю результат на своей странице, и я получаю от этого эхо-сообщение: 19 сентября 2013 г. 13:00:00 по Гринвичу ... где вы получили эту идею от того, что нет такого времени, как 13 часов вечера? –

+0

Что именно вы эхом отдаете? В какое время вы ожидаете 13 вечера? У моих часов всего 12 часов. – JJJ

ответ

2

13:00:00 PM Недействительное время. AM и PM используются для указания, на какой стороне 12-часового цикла это время. Вы не можете логически утверждать, что находитесь на 13-м часе 12-часовой части часов.

EDIT: Для наглядности: 13:00 == 1 PM, 13:00 PM = ничего.

+0

Итак, как же мой компьютер показывает мое время как 13:15? это не имеет смысла. –

+1

Это правильно. Но у него нет PM или AM в конце, это главная проблема. Пожалуйста, внимательно прочитайте мой ответ. – thepratt

+0

И сказать, что 13 вечера означали бы, что вы говорили через 13 часов после полудня, а это означает, что это будет ссылка на 1 AM или 01:00, а не на 13:00 или 13:00. – thepratt

Смежные вопросы