Проблема выбора даты и месяца в codeigniter - PullRequest
0 голосов
/ 11 сентября 2018

У меня проблема с использованием средства выбора даты для моих данных. Мне нужно ввести только месяц и год для моей базы данных. Это мой тип для данных

enter image description here

Пока у меня есть это представление:

<div class="form-group">
    <label for="Periode" class="col-md-2">
        Periode <text style="color:red"><b>*</b></text>
    </label>
<div class="col-md-4">
<script type="text/javascript">
    $(function() {   
        $("#periode").datepicker({
            dateFormat: 'YYYY-MM',
            changeMonth: true,
            changeYear: true,
            showButtonPanel: true,

            onClose: function(date, inst) {
                var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                $(this).val($.datepicker.formatDate('MM yy', new Date(year, month, 1)));
            }
        });

        $("#periode").focus(function () {
            $(".ui-datepicker-calendar").hide();
            $("#ui-datepicker-div").position({
                my: "center top",
                at: "center bottom",
                of: $(this)
            });
        });
    });
</script>
<input class="form-control" name="periode" id="periode" data-format="YYYY-MM" class="Periode" required />

Datepicker работает (показывает только месяц и год на дисплее) enter image description here

Но как только я нажал кнопку отправки, данные не были успешно введены в базу данных, я проверил данные из xampp, и они четко показывают 0000-00-00 в таблице

Есть ли лучшее решение проблемы? уже пытался посмотреть на другие вопросы, но я не могу найти четкого решения: /

РЕДАКТИРОВАТЬ: если вам интересно, это контроллер

        public function submit(){
    $data = array(
        'kode_karyawan'=>$this->input->post('kode_karyawan'),
        'nama_karyawan'=>$this->input->post('nama_karyawan'),
        'periode'=>$this->input->post('periode')
    );
    $this->absengaji_m->insert($data);
    redirect('absengaji');
   }
}

а это модель:

   public function insert($data){
        print_r($data);
        $this->db->insert('uangmakan',$data);
    }

1 Ответ

0 голосов
/ 11 сентября 2018

Это функция для преобразования даты из ГГГГ-ММ в ГГГГ-ММ-ДД, а затем вставки в базу данных

function con2mysql($date) {
  $date = explode("-",$date);
  if ($date[2]<=9) { $date[2]="0".$date[2]; }
  $date = array($date[0], $date[1], $date[2]);

 return $n_date=implode("-", $date);
 }

Если вы используете PHP 5> = 5.1.0, есть встроенная функция

$dateTime = new DateTime($yourDate);
$formatted_date = date_format($dateTime, 'Y-m-d' );

вам нужно изменить

public function submit(){
        $data = array(
            'kode_karyawan'=>$this->input->post('kode_karyawan'),
            'nama_karyawan'=>$this->input->post('nama_karyawan'),
            'periode'=>$this->input->post('periode')
        );
        $this->absengaji_m->insert($data);
        redirect('absengaji');
       }
    }

на

public function submit(){
     $dateTime = new DateTime($this->input->post('periode'));
     $formatted_date = date_format($dateTime, 'Y-m-d' );

        $data = array(
            'kode_karyawan'=>$this->input->post('kode_karyawan'),
            'nama_karyawan'=>$this->input->post('nama_karyawan'),
            'periode'=> $formatted_date
        );
        $this->absengaji_m->insert($data);
        redirect('absengaji');
       }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...