У меня есть поле выбора даты в моей HTML-форме, созданное с помощью Javascript, как показано ниже:

<tr>
<td valign="top"><label for="received">Received Date:</label></td>
<td valign="top"><select id="daydropdown" name="rcvdy"></select>
<select id="monthdropdown" name="rcvmon"></select>
<select id="yeardropdown" name="rcvyr"></select> *</td>
</tr>

Я хочу зарегистрировать ввод даты из формы в базу данных MySQL. Нужно ли мне создавать несколько столбцов полей для каждого ввода «день», «месяц», «год» в моем файле PHP? Нравится

$query=mysql_query('CREATE TABLE shiplog ( shpdy timestamp(2) NOT NULL, shmon timestamp(2) NOT NULL, shpyr timestamp(4) NOT NULL)')
0
hangee 29 Май 2013 в 22:54
1
HTML не имеет ничего общего со структурой вашей базы данных! Промежуточный сценарий PHP берет отправленные данные и форматирует их для базы данных. Используйте одно DATETIME или TIMESTAMP поле!
 – 
deceze
29 Май 2013 в 22:57

1 ответ

Лучший ответ

В html нет необходимости создавать 3 отдельных поля выбора для дня, месяца и года. Вместо этого используйте альтернативу, например jquery UI DatePicker или что-то еще. Затем в таблице создайте отдельный столбец Дата (тип DATE) и вставьте.

Jquery datepicker ui: http://jqueryui.com/datepicker/

P.S mysql DATE тип вставляется в следующем формате YYYY-MM-DD.

3
curious_coder 31 Май 2013 в 09:34
Я не знаю, зачем вам использовать varchar для поля даты, но я одобряю остальную часть этого сообщения.
 – 
Rhinosaurus
29 Май 2013 в 23:11
Блейк Большое спасибо за информацию! Так намного проще ... Еще раз спасибо!
 – 
hangee
29 Май 2013 в 23:12
@Rhinosaurus: Все зависит от того, varchar должен быть последним ленивым средством. Если дата предназначена только для отображения и никаких манипуляций не выполняется, я думаю, что ее можно поместить в varchar.
 – 
curious_coder
29 Май 2013 в 23:15
Блейк Я использовал JQuery datepicker () для ввода поля даты. Поле столбца даты базы данных - «input_date DATE NOT NULL». Однако, когда я протестировал ввод данных с помощью формы и повторил дату $ row ['input_date'], результат: 000-00-00.
 – 
hangee
30 Май 2013 в 02:36
Я решил это, используя этот список ($ year, $ month, $ day) = explode ('/', $ input_date); $ timestamp = mktime (0,0,0, $ год, $ месяц, $ день); $ final_date = дата ('Y-m-d', $ timestamp);
 – 
hangee
30 Май 2013 в 03:00