Как ввести время от <select>в MySQL и вывести его AM / PM? - PullRequest
0 голосов
/ 22 марта 2011

Эй, ребята, я делаю эту форму с вводом, который будет содержать время, и я хочу сделать так, чтобы, когда пользователи выбирают время (например, 8:30 утра), оно было сохранено в mysql, и будетвыводиться по php с точным временем (8:30 утра).

Вот форма.Простая кнопка выбора с шагом 30 по времени.

http://jsfiddle.net/jXVPS/

Основная проблема в том, что я не знаю, как MySQL распознает, если это AM / PM?

Какие значения я должен установить для полей выбора, как вставить его в базу данных mysql, и чтобы mysql или php распознавали, когда это 1:00 AM или 1:00 PM.Есть ли в mysql какие-то 24-часовые часы, которые позволяют ему распознавать, AM / PM или нет?

Ответы [ 3 ]

2 голосов
/ 22 марта 2011

Использовать Тип столбца TIME :

TIME

Время. Диапазон составляет от -838: 59: 59 до 838: 59: 59. MySQL отображает значения ВРЕМЕНИ в формате «ЧЧ: ММ: СС», но позволяет вам присваивать значения столбцам ВРЕМЕНИ, используя либо строки, либо числа.

Он будет хорошо разбирать значения в выбранных вами опциях.


Редактировать : Пример использования:

// saving in the db
$sql = "
  INSERT INTO table_name SET
  # ...
  name_of_the_time_column = '" . mysql_real_escape_string($_POST['start_time']) . "'";

// retrieving from the db
$sql = "
  SELECT id, ..., TIME_FORMAT(name_of_the_time_column, '%h:%i:%s %p') AS formatted_time
  FROM table_name
  # ...
  ";
0 голосов
/ 22 марта 2011

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

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-types.html

После того, как вы отправите через отправку формы или ajax и ваша отвечающая PHP-страница вступит во владение, выполните запрос со следующей строкой в ​​PHP:
"INSERT INTO table (userId, time, ...) VALUES (..., '$inTime', ...)"

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


Ответ на комментарий

Я полагаю, вы имеете в виду, что вы хотите, чтобы 13:00:00 было 1:00 PM, когда вы повторили это позже, верно?

Вероятно, есть кое-что, что вы можете сделать с функциями времени для PHP или MySQL (PHP ниже, MySQL выше), но я не знаю по памяти, и это достаточно просто, вы можете просто сделать это самостоятельно. http://www.php.net/manual/en/ref.datetime.php

$time = //get time field from MySQL
list($h, $m, $s) = explode($time, ':');
if ($h > 12) {$h -= 12; $amOrPm = 'PM'}; else {$amOrPm = 'AM';}
if ($h == 0) {$h = 12;}

echo "$h:$m $amOrPm";

PS - 13:00:00 - 13:00, а не am.

0 голосов
/ 22 марта 2011

Не тестировалось:

INSERT INTO myTable
SET time = TIME(STR_TO_DATE('8:30:00 AM','%h:%m:%s %p'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...