Изменения даты при вставке даты в базу данных с использованием обработки ajax (CodeIgniter)

#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)),
  

Дайте мне знать результат.