Эффективное отображение strtotime() в запросе MySQL/PHP

Это мой запрос PHP/MySQL, как указано в Отображение ссылок в PHP/MySQL? :

http://pastebin.com/5Td9Bybn

Признаюсь, я забыл, как эффективно использовать функцию strtotime(), так как хочу показывать время своих шоу в таком формате:

06:00

10:00

(без :00 в конце, например, 10:00:00)

Теперь код отображает эту ошибку:

Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный T_ECHO в C:\www\vhosts\localradio\schedsun.php в строке 11

Я исправил ошибки в предыдущем вопросе, как я могу адаптировать это, если я хочу показывать время как:

6:00am

06:00

6am

(просто для проверки, в пределах параметров кода на Pastebin).

В основном я спрашиваю просто, поскольку я делаю свой собственный курс повышения квалификации в других частях PHP, потратив так много времени на изучение массивов и т. д.

Наконец, нужна ли мне переменная или нет - или $result_ar не нужен?

Спасибо за помощь в последнем вопросе!


person avenas8808    schedule 15.07.2011    source источник


Ответы (4)


Вы можете сделать это непосредственно в MySQL, что избавляет вас от накладных расходов на синтаксический анализ функции strtotime() и гарантирует получение правильных результатов, поскольку strtotime иногда может ошибаться.

SELECT DATE_FORMAT(yourdatefield, '%h:%i') ...
person Marc B    schedule 15.07.2011
comment
Как это сделать: $result = mysql_query(SELECT DATE_FORMAT (эфирное время,%H) * FROM Presenters1 ;, $connection) или die(ошибка при запросе базы данных); - person avenas8808; 16.07.2011
comment
вам нужны кавычки вокруг строки формата, поэтому '%H', и измените вызов die() на die(mysql_error()), который точно скажет вам, почему запрос не удался. - person Marc B; 16.07.2011

PHP-функция strtotime() используется следующим образом:

int strtotime ( string $time [, int $now ] )

Это означает, что вы передаете строковое значение времени и, необязательно, значение текущего времени, которое является отметкой времени UNIX. Возвращаемое значение представляет собой целое число, представляющее собой отметку времени UNIX.

Ниже приведен пример такого использования, где дата, переданная в функцию strtotime(), может быть датой из запроса к базе данных или аналогичной датой:

$ts = strtotime('2007-12-21');

Это вернет в переменную $ts значение 1198148400, которое является отметкой времени UNIX для даты 21 декабря 2007 года. Это можно подтвердить с помощью функции date() следующим образом:

echo date('Y-m-d', 1198148400);
// echos 2007-12-21

Функция strtotime() может анализировать большое количество строк и преобразовывать их в соответствующие метки времени, используя фактические даты, а также такие строки, как «следующая неделя», «следующий вторник», «последний четверг», «2 недели назад» и т. д. на. Вот некоторые примеры:

$ts = strtotime('21 december 2007');
echo $ts, '<br />';
echo date('Y-m-d', $ts), '<br />';

Это отобразит следующее:

1198148400 2007-12-21

Если сегодня 21 декабря, то следующее:

$ts = strtotime('next week');
echo $ts, '<br />';
echo date('Y-m-d', $ts), '<br />';

$ts = strtotime('next tuesday');
echo $ts, '<br />';
echo date('Y-m-d', $ts), '<br />';

$ts = strtotime('last thursday');
echo $ts, '<br />';
echo date('Y-m-d', $ts), '<br />';

$ts = strtotime('2 weeks ago');
echo $ts, '<br />';
echo date('Y-m-d', $ts), '<br />';

$ts = strtotime('+ 1 month');
echo $ts, '<br />';
echo date('Y-m-d', $ts), '<br />';

отобразит следующее:

1199006542
2007-12-30
1198494000
2007-12-25
1198062000
2007-12-20
1197192142
2007-12-09
1201080142
2008-01-23
person theGame    schedule 15.07.2011

Опция 1

strtotime() даст вам отметку времени, вы используете функцию date() для форматирования отображения времени и/или даты.

06:00

<?php echo date('H:i', strtotime($result_ar['airtime'])); ?>

6:00

<?php echo date('g:ia', strtotime($result_ar['airtime'])); ?>

6 утра

<?php echo date('ga', strtotime($result_ar['airtime'])); ?>

Прочтите о date() и его форматировании на php.net.


Вариант 2

Сделайте это в MySQL, как предлагает @Marc B.

Изменить эту строку

$result = mysql_query("SELECT * FROM presenters1;", $connection) or die("error querying database");

to

$result = mysql_query("SELECT *, TIME_FORMAT(airtime, '%h:%i') `airtime` FROM presenters1;", $connection) or die("error querying database");

Затем измените эту строку:

<div class="time"><? php echo strotime ('H') $result_ar['airtime']; ?></div>

to

<div class="time"><?php echo $result_ar['airtime']; ?></div>
person Shef    schedule 15.07.2011

У вас есть пробел между <? и словом php. Я думаю, что это вызывает неожиданную ошибку эха. У вас должно быть <?php

person Paul    schedule 15.07.2011