Таймер обратного отсчета с php - PullRequest
2 голосов
/ 20 февраля 2011

Работа со временем в PHP пинает мою задницу.

Я пытаюсь сделать таймер, который запускается, когда я нажимаю кнопку. Я надеюсь сделать что-то, что, когда я нажимаю кнопку, вводит текущее время и время + 5 минут в базу данных, а затем выводит разницу в мин: сек. Мне нужно хранить время, чтобы оно включало дату, чтобы когда сайт не использовался, он не отображал какое-то странное значение.

Первая страница входит в раз

$target = date('Y-m-d H:i:s') + date('i', 5);
$starttime = date('Y-m-d H:i:s');

INSERT INTO countdowntimer (target, starttime) VALUES ('$target', '$starttime');

И на второй странице это отображается:

$starttime = mysql_query("SELECT starttime FROM countdowntimer");
$target = mysql_query("SELECT target FROM countdowntimer");
$difference = $target-$starttime
$min =  floor($difference/60)                                                                    
$sec = floor($difference-($min*60))
if ($difference < 0) {
   echo '0:00'; }
else {
   echo $min . ':' . $sec; }

Что ж, мой $target вводится как 0000-00-00 00:00:00, и на моей странице отображается «0.1». Переменные: $ startime = идентификатор ресурса № 3, $ target = идентификатор ресурса № 4, $ разница = 1, $ min = 0, $ sec = 1.

Первый вопрос: как мне ввести текущее время + 5 минут Второй вопрос: есть ли у вас какие-либо советы по работе со значениями, которые будут отображаться как мин: сек. Я хотел бы, чтобы мин отображался как 1 цифра, а затем 0, а секунды, когда меньше 10 отображаются как: 09,: 08 и т. Д.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 20 февраля 2011

mysql_query() возвращает объект результата mysql, а не значение, которое вы выбираете из базы данных. Правильная кодовая последовательность будет

$result = mysql_query("... your query here ...") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
    $row = mysql_fetch_array($result);
    $value = $row[0];
} else {
    ... query didn't return anything
}

Математическая дата может быть следующей:

$starttime = time(); // PHP's date values are simply "seconds since jan 1/19170"
$target = $now + (5 * 60);

$query = "INSERT INTO countdowntimer (target, starttime) VALUES (from_unixtimestamp($target), from_unixtimestamp($starttime));"
... query stuff here ...

или если вы хотите сделать это исключительно в mysql:

INSERT INTO countdowntimer (target, starttime) VALUES (DATE_ADD(now(), INTERVAL 5 MINUTE), now())

Затем позже:

$query = "SELECT target, starttime FROM countdowntimer";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($result);
$target = $result['target'];
$starttime = $result['target'];

и т. Д.

$min = (int)($difference / 60); // get minutes
$sec = $difference % 60;  // get the remainder

$fancy_string = sprintf('%d:%02d', $min, $sec);
1 голос
/ 20 февраля 2011

Пара способов может работать.

Один из способов - strtotime: http://php.net/manual/en/function.strtotime.php

Вы можете выразить это как:

$timestamp = strtotime('+ 5 minutes', $target);

Или вы можете использовать mktime, чтобы добавить время:

* * 1010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...