#javascript #php #mysql #codeigniter #datetimepicker
#javascript #php #mysql #codeigniter #datetimepicker
Вопрос:
Я получаю эту ошибку при попытке вставить время в mysql.
«Неверное значение времени …. «
Мой контроллер:
$data = array(
'branch_open_time' => date("H:i:s",strtotime($this->input->post('time_range_from'))),
'branch_close_time' => date("H:i:s",strtotime($this->input->post('time_range_to')))
);
$this->db->insert('branch_user',$data);
$this->db->insert_id();
Мой взгляд и javascript:
<div id="datetimepicker" class="input-append" style="resize: none;" data-autoclose="true">
<label for="open">Waktu Buka</label><br />
<div class="input-group">
<input data-format="HH:mm PP" type="text" class="form-control" name="time_range_from" id="time_range_from">
<span class="add-on input-group-addon" style="height: 30px">
<i class="glyphicon glyphicon-time"></i>
</span>
</div>
</div>
<div id="datetimepicker2" class="input-append" style="resize: none;" data-autoclose="true">
<label for="open">Waktu Tutup</label><br />
<div class="input-group">
<input data-format="HH:mm PP" type="text" class="form-control" name="time_range_to" id="time_range_to">
<span class="add-on input-group-addon" style="height: 30px">
<i class="glyphicon glyphicon-time"></i>
</span>
</div>
</div>
jQuery:
$(function() {
$('#datetimepicker').datetimepicker
({
pick12HourFormat: true,
language: 'en',
pickDate: false
});
$('#datetimepicker2').datetimepicker
({
pick12HourFormat: true,
language: 'en',
pickDate: false
});
});
добавить функцию:
function add_location(){
branch_open_time = $("#time_range_from").val();
barnch_close_time = $("#time_range_to").val();
$.ajax
({
url : 'add_location',
type: "POST",
dataType: "text",
data:{
time_range_from: branch_open_time,
time_range_to: barnch_close_time
},
success: function(data)
{
location.reload();
},
error: function (jqXHR, textStatus, errorThrown)
{
alert('Error data');
}
});
}
Указатель времени отображается правильно в 12-часовом формате, и я конвертирую его из H: i: s в strtotime перед вставкой в базу данных, но это не работает. Что я сделал не так?
ввод datetimepicker:
Комментарии:
1. Какой тип поля вашей базы данных? varchar или time .
2. время. @AHJeebon
3. И какой именно формат времени отправляется из браузера? Это что-то вроде
10:30am
или что?4.Внутри функции
add_location(){
добавьтеvar
для инициализации переменную. Это будет:var branch_open_time = $("#time_range_from").val();
var barnch_close_time = $("#time_range_to").val();
5. Вы пытались проверить вывод
date("H:i:s",strtotime($this->input->post('time_range_from')))
иdate("H:i:s",strtotime($this->input->post('time_range_to')))
?
Ответ №1:
Строка
echo date("H:i:s",strtotime('05 : 54 : 51 PM'));
Приведет к результату 00:00:00
Однако
echo date("H:i:s",strtotime('05:54:51 PM'));
или
echo date("H:i:s",strtotime('05:54:51PM'));
Приведет к результату 17:54:51
Поэтому вам нужно вырезать эти пробелы из времени либо в javascript, либо в PHP-коде, прежде чем отправлять эти данные в команду INSERT
Например
$t1 = date('H:i:s', str_replace(' ', '', $this->input->post('time_range_from')));
$t2 = date('H:i:s', str_replace(' ', '', $this->input->post('time_range_to')));
$data = array(
'branch_open_time' => $t1,
'branch_close_time' => $t2
);
$this->db->insert('branch_user',$data);
$this->db->insert_id();
Комментарии:
1. спасибо за вашу помощь, но это
05:54:51 PM
отображается в журнале консоли, и я все равно получаю01:00:00
после вставки в базу данных:(2. Каков тип данных столбцов, в которые вы вставляете эти данные
Ответ №2:
При прочих равных условиях:
Обновите свой код до этого:
Я добавил var перед переменной, чтобы установить ее как переменную
function add_location(){
var branch_open_time = $("#time_range_from").val();
var barnch_close_time = $("#time_range_to").val();
$.ajax({
url : 'add_location',
type: "POST",
dataType: "text",
data:{
time_range_from: branch_open_time,
time_range_to: barnch_close_time
},
success: function(data)
{
location.reload();
},
error: function (jqXHR, textStatus, errorThrown)
{
alert('Error data');
}
});
}
Пробелы в вашей дате делают ее недействительной перед вставкой
Используйте это, чтобы удалить пробел из даты, чтобы сделать ее допустимой:
str_replace(' ','',$date);