#php #jquery #ajax #codeigniter
#php #jquery #ajax #инициатор кодирования #codeigniter
Вопрос:
Я использую фреймворк CodeIgniter и использую jQuery и ajax для вставки данных из входных данных. Проблема в том, что дата меняется, когда я обрабатываю ее в ajax. Я использую MySQL для базы данных, а тип данных — Date.
Я попытался изменить форматы для даты, потому что это может быть не тот формат.
Jquery/Ajax:
$(document).on('submit', '#insertQL_form', function(event){
event.preventDefault();
var month = $('#datetimepicker1').val();
var nameCompany = $('#nameCompany').val();
var email = $('#email').val();
var position = $('#position').val();
var ojLink = $('#ojLink').val();
var remarks = $('#remarks').val();
var withTestTask = $('#withTestTask').val();
var testTaskStatus = $('#testTaskStatus').val();
var withInterview = $('#withInterview').val();
var overallStatus = $('#overallStatus').val();
alert(month);
$.ajax({
url:"<?php echo base_url() . 'home/insertQL'?>",
method:'POST',
data: new FormData(this),
contentType:false,
processData:false,
success:function(data)
{
alert(data);
}
});
});
Функция контроллера:
public function insertQL()
{
if($_POST["action"] == "Add")
{
$insert_data = array(
'month' => date("Y-m-d",$this->input->post('month')),
'nameCompany' => $this->input->post('nameCompany'),
'email' => $this->input->post('email'),
'position' => $this->input->post('position'),
'ojLink' => $this->input->post('ojLink'),
'remarks' => $this->input->post('remarks'),
'withTestTask' => $this->input->post('withTestTask'),
'testTaskStatus' => $this->input->post('testTaskStatus'),
'withInterview' => $this->input->post('withInterview'),
'overallStatus' => $this->input->post('overallStatus')
);
$this->load->model('QLModel');
$this->QLModel->insert_crud($insert_data);
echo 'Data Inserted';
}
}
Комментарии:
1. Итак, что
month
представляет?2. это дата. вводящее в заблуждение имя переменной.
3. Вы не получаете никаких ошибок, потому что вы смешали JS и PHP-код?
4. (Я отредактировал код)Я не получал ошибок от этих кодов, однако данные, которые вставляются в переменную ‘month’, всегда 1970-01-01
5. Вы можете вставить фактическое значение
month
переменной, которую вы получаете, перед изменением формата.
Ответ №1:
1970-01-01
эту дату MySQL сохраняет, когда не может преобразовать указанную дату в определенный формат даты в MySQL, то есть Year-month-day
, используйте этот код, чтобы исправить эту проблему,
function mformat_date($date_string)
{
// Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a
// slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is
// assumed.
return strtotime(implode('-', array_reverse(explode('/', $date_string))));
}
Ответ №2:
Вы должны попробовать это перед вставкой в свою базу данных.
$m = strtr($this->input->post('month'), '/', '-');
затем вставьте это так.
'month' => date('Y-m-d', strtotime($m)),
Дайте мне знать результат.