2009-05-17 6 views
0

Я довольно новичок в php и читал книгу Ларри Ульмана для разработки базового сайта db. Я использовал YUI Calendar pop up date picker, чтобы добавить дату в текстовое поле под названием «дата». Формат даты, который он вводит, есть, например, 7 мая 2009 годаКак преобразовать дату в текстовое поле в формат MySQL DATETIME

Я пробовал много разных способов попробовать ввести дату в 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. 

Я думаю, что я предоставил всю необходимую информацию, но опять-таки свои извинения, если это не помогает, и я сделаю все возможное, чтобы обеспечить йо с любой другой информацией, которая может Вам потребоваться. Thanks - Sean

ответ

0

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

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

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

+0

Спасибо, Zombat Я буду исследовать это, я смотрю на строки mktime. Спасибо – Ddywalgi

+0

Привет, Зомбат, я понял, что дата может быть заполнена всплывающим подборщиком или может быть введена. Если я хочу определить введенную дату, например 12/02/2009, будет ли это правильный синтаксис? $ date2 = date2 ("^ ([0-9] {2})/([0-9] {2})/([0-9] {4}) $", strtotime ('12/02/2009')); $ date1 = date1 ("Y-m-d", strtotime ('четверг, 7 мая 2009 г.)); $ p = дата ("$ date1", | "$ date2"); Благодарим вас за помощь, теперь это немного лучше. – Ddywalgi

+0

Это выглядит довольно близко к правильному, я думаю. Пока вы можете предоставить временную метку unix в качестве второго параметра на дату(), вы сможете создать правильную дату MySQL. strtotime() работает очень хорошо для этого, а также mktime(). – zombat

0

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

EDIT: см. http://dev.mysql.com/doc/refman/5.0/en/datetime.html для указанного формата. Кроме того, вам может быть лучше хранить дату/время как временную метку unix, так как обычно ее проще поддерживать.

+0

привет спасибо. Я изучал временную метку Unix, и я пытаюсь изменить текст в значение, которое может понять MySQL. ГГГГ ММ ДД, но пока я не вижу его. Спасибо за ваш совет. Я прочитаю ссылку, которую вы отправили. – Ddywalgi

0

формат даты в MySQL является YYYY-MM-DD, так изменить способ принимать данные по PHP

если (eregi ("^ ([0-9] {2})/([ 0-9] {2})/([0-9] {4}) $ ", $ _POST ['date'],)) { $ p = escape_data ($ _ POST ['date'],); } else { $ p = FALSE; echo '

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

';

Должно быть

, если (eregi ("^ ([0-9] {4}/([0-9] {2})/([0-9] {2})) $ ", $ _POST ['date'],)) { $ p = escape_data ($ _ POST ['date'],); } else { $ p = FALSE; echo '

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

';

Смежные вопросы