У меня есть этот код для таймера обратного отсчета. в основном это комбинация таймера обратного отсчета 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>
любая помощь будет принята с благодарностью.
Нет такого времени, как 13 часов. – JJJ
@ Джухана, ты уверен? потому что я повторяю результат на своей странице, и я получаю от этого эхо-сообщение: 19 сентября 2013 г. 13:00:00 по Гринвичу ... где вы получили эту идею от того, что нет такого времени, как 13 часов вечера? –
Что именно вы эхом отдаете? В какое время вы ожидаете 13 вечера? У моих часов всего 12 часов. – JJJ