Я не могу вставить значения из моего JQuery Datepicker в мою базу данных MySQL с типом данных Date. как я буду преобразовывать строковый формат даты? im используя Codeigniter с MVC. вот мой код:
Javascript
<script> $(function() { $( "#datepicker" ).datepicker({ showOn: "button", buttonImage: "images/icons/calendar_24.png", buttonImageOnly: true, onSelect: function(dateText, inst){ $("input[name='dob']").val(dateText); } }); }); </script>
контроллер
function create() { $data = array( 'FirstName' => $this->input->post('fname'), 'DateofBirth' => $this->input->post('dob') ); $this->site_model->add_record($data); $this->index(); }
Посмотреть
<?php echo form_open('site/create');?> <p> <label for="fname">First Name:</label> <input type="text" name="fname" /> </p> <p> <input type="text" name='dob' id="datepicker" /> </p>
Спасибо, парни! я прочитал некоторое решение в google, и я сделал это:
контроллер:
function create() { $date = $this->input->post('dob'); $data = array( 'FirstName' => $this->input->post('fname'), 'DateofBirth' => date('Ym-d', strtotime($date)) ); $this->site_model->add_record($data); $this->index(); }
и это решило мою проблему! 🙂
Я предполагаю, что столбец dob таблицы MySQL имеет тип DATE
. Тип Date
принимает значение в формате yyyy-mm-dd
например 2012-09-21
Поэтому, чтобы ответить на ваш вопрос – вам нужно отформатировать дату с даты date до того, как вы вернетесь. например, если дата даты дат находится в формате dd-mm-yy
, вам необходимо преобразовать ее в формат даты mysql, используя функцию date()
php в вашем контроллере …. (Существуют и другие методы обработки дат, таких как класс даты и времени)
function create() { $data = array( 'FirstName' => $this->input->post('fname'), 'DateofBirth' => date('Ym-d', strtotime(str_replace('-', '/', $this->input->post('dob')))); ); $this->site_model->add_record($data); $this->index(); }
ПРИМЕЧАНИЕ при использовании strtotime ()
Даты в форматах m / d / y или dmy устраняются неоднозначно, глядя на разделитель между различными компонентами: если разделитель является косой чертой (/), то предполагается, что американский m / d / y; тогда как если разделитель является тире (-) или точкой (.), тогда предполагается европейский формат dmy.
<script> $(function() { $( "#datepicker" ).datepicker({ showOn: "button", buttonImage: "images/icons/calendar_24.png", buttonImageOnly: true, dateFormat: 'Ymd' // No need to add onselect , value selected will automatically be added to input field #datepicker }); }); </script>
Ваш код в порядке
$(document).ready(function() { var year=new Date().getFullYear(); var yearTo=year-18; var yearFrom=year-100; //display the years from hundred years in the past till 18 years in the past $( "#datePickerDOB" ).live("click",function(){ $( "#datePickerDOB" ).datepicker({ changeMonth: true, changeYear: true, yearRange: yearFrom+":"+yearTo, dateFormat: "dd-mm-yy" }); }); });
Для форматирования datepicker используйте следующее:
$ ('# datepicker'). datepicker ({dateFormat: 'yy-mm-dd'});
Ваш контроллер должен выглядеть так:
{ $date = $this->input->post('dob'); $data = array( 'FirstName' => $this->input->post('fname'), 'DateofBirth' => date('Ym-d', strtotime($date)) ); $this->site_model->add_record($data); $this->index(); }
Я думаю, это тебе подходит лучше