codeigniter中的月份和年份日期选择器问题

Posted

技术标签:

【中文标题】codeigniter中的月份和年份日期选择器问题【英文标题】:Month and year datepicker problem in codeigniter 【发布时间】:2019-02-15 23:56:01 【问题描述】:

我在为我的数据使用日期选择器时遇到问题。我只需要为我的数据库输入月份和年份。这是我的数据类型

到目前为止,我有这样的看法:

<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 />

日期选择器正在工作(它只显示月份和年份)

但是一旦我点击提交按钮,数据没有成功输入数据库,我从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);
    

【问题讨论】:

嗨,这有点难(毕竟它的日期格式).. 可以肯定的是,当您将数据插入表中的date field 时,格式为@987654329 @ 正确的?你做了一些转换吗? mysql 使用 YYYY-MM-DD 格式进行插入,因此缺少一天部分可能最终会导致整个事情被拒绝或简单地给出默认全零值.. 更改:新日期(年、月、1)为:新日期(年、月) @BagusTesa 是的,我的数据库中的格式是YYYY-MM-DD。是的,我实际上有完全相同的问题。你能帮助我吗?顺便说一句,你是印度尼西亚人吗?呵呵 @NiallLonergan 已经尝试过了,但仍然无法正常工作:( 您使用的是哪个日期选择器?您可以将其包含在您的代码中或此处吗? 【参考方案1】:

这是一个将日期从YYYY-MM转换为YYYY-MM-DD然后插入数据库的函数

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');
       
    

【讨论】:

有趣!但我是这种事情的真正新手。所以我想知道,该功能应该放在控制器中吗?如果答案是肯定的,那么我将如何关联形式和功能?抱歉问了太多问题 在数据库中插入或更新日期字段时使用此功能的时间 如果我的回答对您有帮助,请批准 仍然对我应该把函数放在哪里感到困惑,你能告诉我更多关于它的信息吗?如果您想知道模型和控制器,已经更新了我的问题 太棒了...也感谢您的回答批准

以上是关于codeigniter中的月份和年份日期选择器问题的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 日期选择器显示月份和年份菜单

没有日期选择的角度日期选择器(只有月份和年份)

EXTJS 5 - 仅日期选择器年份和月份

JQuery 日期时间选择器 - 只需要选择月份和年份

如何仅在月份、日期和年份中更改我的日期选择器显示

如何将 jQuery 日期选择器转换为仅选择月份和年份?