Как преобразовать дату в текстовом поле в формат MySQL DATETIME - PullRequest
0 голосов
/ 18 мая 2009

Я довольно новичок в php и читаю книгу Ларри Уллмана, чтобы разработать базовый сайт БД. Я использовал всплывающее окно выбора даты в календаре YUI, чтобы добавить дату в текстовое поле с именем «date». Формат даты, который он вводит, например, четверг, 7 мая 2009 года

Я пробовал много разных способов ввести дату в mysql db, но она остается на 00 00 00 00 00 00 Это код, связанный с полем даты, которое у меня есть,

    // Check for a Date.
if (eregi ("^([0-9]{2})/([0-9]{2})/([0-9]{4})$", $_POST['date'],)) {
    $p = escape_data($_POST['date'],);
} else {
    $p = FALSE;
    echo '<p><font color="red">Please enter a valid Date!</font></p>';
}

    // Add the URL to the urls table.
    $query = "INSERT INTO urls (url, title, description, date) VALUES ('$u', '$t', '$d', '$p')";        
    $result = @mysql_query ($query); // Run the query.
    $uid = @mysql_insert_id(); // Get the url ID.

    if ($uid > 0) { // New URL has been added.

Я думаю, что предоставил всю соответствующую информацию, но снова извиняюсь, если это не поможет, и я сделаю все возможное, чтобы предоставить вам любую другую информацию, которая может вам потребоваться. Спасибо - Шон

Ответы [ 3 ]

0 голосов
/ 18 мая 2009

Если формат, который передает средство выбора даты, - «четверг, 7 мая 2009 года», то функции strtotime () и date () должны работать, действительная дата для передачи в MySQL:

$p = date("Y-m-d H:i:s",strtotime('Thursday, 7 May 2009'));

Если в поле вашей базы данных указано DATE, вам, вероятно, нужна только часть "Y-m-d". Если это DATETIME, вам также понадобится "H: i: s".

0 голосов
/ 18 ноября 2013

формат даты в mysql - ГГГГ-ММ-ДД, поэтому измените способ приема данных по php

if (eregi ("^ ([0-9] {2}) / ([0-9] {2}) / ([0-9] {4}) $", $ _POST ['date' ],)) { $ p = escape_data ($ _ POST ['date'],); } еще { $ p = ЛОЖЬ; echo '

Пожалуйста, введите действительную дату!

';

Должно быть

if (eregi ("^ ([0-9] {4} / ([0-9] {2}) / ([0-9] {2})) $", $ _POST ['date' ],)) { $ p = escape_data ($ _ POST ['date'],); } еще { $ p = ЛОЖЬ; echo '

Пожалуйста, введите действительную дату!

';
0 голосов
/ 18 мая 2009

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

РЕДАКТИРОВАТЬ: см. http://dev.mysql.com/doc/refman/5.0/en/datetime.html для указанного формата. Кроме того, вам лучше хранить дату / время как метку времени Unix, так как обычно ее легче поддерживать.

...