6

我无法将 JQuery Datepicker 中的值插入到具有 Date 数据类型的 MySQL 数据库中。我将如何将字符串转换为日期数据类型?我将 Codeigniter 与 MVC 一起使用。这是我的代码:

javascript

<script>
$(function() {
    $( "#datepicker" ).datepicker({
        showOn: "button",
        buttonImage: "images/icons/calendar_24.png",
        buttonImageOnly: true,
        onSelect: function(dateText, inst){
            $("input[name='dob']").val(dateText);
        }
    });

});
</script>

控制器

function create()
{
    $data = array(
        'FirstName' => $this->input->post('fname'),
        'DateofBirth' => $this->input->post('dob')
    );

    $this->site_model->add_record($data);
    $this->index();
}

看法

<?php echo form_open('site/create');?>
<p>
    <label for="fname">First Name:</label>
    <input type="text" name="fname" />
</p>

<p>
    <input type="text" name='dob' id="datepicker" />
</p>

多谢你们!我在谷歌阅读了一些解决方案,我这样做了:

控制器:

function create()
{
    $date = $this->input->post('dob');

    $data = array(
        'FirstName' => $this->input->post('fname'),
        'DateofBirth' => date('Y-m-d', strtotime($date))
    );

    $this->site_model->add_record($data);
    $this->index();
}

这解决了我的问题!:)

4

5 回答 5

5

我假设您的 MySQL 表的 dob 列是DATE类型。 type 以egDate的格式取值yyyy-mm-dd2012-09-21

因此,要回答您的问题 - 您需要将日期选择器中的日期格式化为上述有效格式。例如,如果您的 datepicker 日期的dd-mm-yy格式是您需要使用date()控制器中的 php 函数将其转换为 mysql 日期格式....(还有其他方法可以处理日期,例如 datetime 类)

function create()
{
    $data = array(
        'FirstName' => $this->input->post('fname'),
        'DateofBirth' => date('Y-m-d', strtotime(str_replace('-', '/', $this->input->post('dob')))); 
    );

    $this->site_model->add_record($data);
    $this->index();
}

使用 strtotime() 时的注意事项

m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。

于 2012-09-21T08:33:58.903 回答
0
<script>
$(function() {
    $( "#datepicker" ).datepicker({
        showOn: "button",
        buttonImage: "images/icons/calendar_24.png",
        buttonImageOnly: true,
        dateFormat: 'Y-m-d'       // No need to add onselect , value selected will automatically be added to input field #datepicker       
    });

});
</script>

你的代码很好

于 2012-09-21T08:34:46.810 回答
0
$(document).ready(function() {

    var year=new Date().getFullYear();
    var yearTo=year-18;
    var yearFrom=year-100;

    //display the years from hundred years in the past till 18 years in the past

    $( "#datePickerDOB" ).live("click",function(){      

        $( "#datePickerDOB" ).datepicker({
            changeMonth: true,
            changeYear: true,
            yearRange: yearFrom+":"+yearTo,
            dateFormat: "dd-mm-yy"
        });
    });
});
于 2012-09-25T07:28:56.747 回答
0

使用以下内容格式化日期选择器:

$('#datepicker').datepicker({dateFormat : 'yy-mm-dd'});

于 2013-09-03T19:20:56.780 回答
0

您的控制器应如下所示:

{
    $date = $this->input->post('dob');

    $data = array(
        'FirstName' => $this->input->post('fname'),
        'DateofBirth' => date('Y-m-d', strtotime($date))
    );

    $this->site_model->add_record($data);
    $this->index();
}

我觉得这个更适合你

于 2015-05-14T10:46:07.460 回答