yii1日期选择器在数据库中将值存储为000-00-00

时间:2017-05-04 06:46:32

标签: php mysql twitter-bootstrap yii datepicker

我想在表单中使用日期选择器,但在提交后,该值在数据库中存储为 000-00-00 ,并在提交表单后查看详细信息 minDate 显示值。

同一日期选择器在其他形式下工作正常, 我正在尝试重新使用日期选择器

file.js

function userDetailsEventHandlers() {

$('.date-picker').datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: 'dd-MM-yy',
        yearRange: '1900:1998',
        minDate: '01-January-1900',
        maxDate: '31-December-1998',
    });
}

form.php的

<div class="form-group">
    <?php echo $form->labelEx($model,'DOB'); ?>
     <?php echo $form->textField($model,'DOB', array('class' => 'form-control date-picker')); ?>
    <?php echo $form->error($model,'DOB'); ?>
</div> 

模特课程:

protected function afterFind() {

       if (!empty($this->DOB)) {
            $this->DOB = date('d-F-Y', strtotime($this->DOB));
        }
        return parent::afterFind();
    } 

数据库中的数据类型:datetime(我也尝试过日期)。 使用datepicker的其他形式的数据类型是datetime。

3 个答案:

答案 0 :(得分:0)

$('.date-picker').datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: 'dd-MM-yyyy', <------------ Make this changes
        yearRange: '1900:1998',
        minDate: '01-01-1900',  <------------ Make this changes
        maxDate: '31-12-1998',
    });
}

当您将dateformat指定为'dd-MM-yy'时,需要以相同的格式传输minDate和maxDate。 还要确保在服务器端传递哪种格式。如果它不是yyyy-MM-dd,则需要使用STR_TO_DATE()手动将该字符串内容转换为日期。 试试上面的代码。 希望这会有所帮助。

答案 1 :(得分:0)

我认为问题在于日期格式,因为您的日期选择器使用日期格式:

'01-January-1900'
 // which is different then 'Y-m-d'

但是日期列的默认格式为'Y-m-d',如果您的数据格式不正确,则会插入000-00-00。因此,请将日期更改为'Y-m-d',然后重试。

答案 2 :(得分:0)

最后使用了CJuiDatePicker,:P

<div class="form-group">
                                 <?php echo $form->labelEx($model,'DOB'); ?>
                                 <?php
                                    $this->widget('zii.widgets.jui.CJuiDatePicker',array(
                                        'model'     => $model,
                                        'attribute' => 'DOB',
                                        'language'=> 'en',


                                        'name'=>'datepicker-month-year-menu',
                                         //'flat'=>true,//remove to hide
                                        'options'=>array(
                                            'dateFormat' => 'yy-mm-dd',
                                            'showAnim'=>'slide',//'slide','fold','slideDown','fadeIn','blind','bounce','clip','drop'
                                            'changeMonth'=>true,
                                            'changeYear'=>true,
                                            'yearRange'=>'1900:1998',
                                           // 'minDate' => '2000-01-01',      // minimum date
                                           // 'maxDate' => '2099-12-31',      // maximum date
                                        ),
                                        'htmlOptions'=>array(
                                            'class' => 'form-control',
                                            'style'=>''
                                        ),
                                    ));
                                    ?>

                                     </div>