如何使用 Codeigniter 将 JQuery datepicker 中的值插入 MySQL 日期数据类型?

Posted

技术标签:

【中文标题】如何使用 Codeigniter 将 JQuery datepicker 中的值插入 MySQL 日期数据类型?【英文标题】:How to insert values from JQuery datepicker to MySQL date datatype using Codeigniter? 【发布时间】:2012-09-13 15:50:09 【问题描述】:

我无法将 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();

这解决了我的问题! :)

【问题讨论】:

MySQL 日期是一个具有特定格式的简单字符串:YYYY-MM-DD,范围从1000-01-019999-12-31。只需将收到的日期转换为这种格式(如果需要)并插入即可。 【参考方案1】:

我假设您的 MySQL 表的 dob 列是 DATE 类型。 Date 类型采用 yyyy-mm-dd 格式的值,例如2012-09-21

所以要回答您的问题 - 您需要将日期选择器中的日期格式化为上述有效格式。例如如果你的 datepicker 日期是 dd-mm-yy 格式,你需要使用控制器中 php 的 date() 函数将其转换为 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 或 d-m-y 格式的日期可以通过查看来消除歧义 各个组件之间的分隔符:如果分隔符是 斜线 (/),则假定为美式 m/d/y;而如果 分隔符是破折号 (-) 或点 (.),然后是欧洲 d-m-y 格式 是假定的。

【讨论】:

谢谢@Vamsi 你在考文垂大学学习过吗?我想我认识一个叫 Vamsi 的人。【参考方案2】:
<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>

你的代码很好

【讨论】:

【参考方案3】:
$(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"
        );
    );
);

【讨论】:

【参考方案4】:

使用以下格式设置日期选择器:

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

【讨论】:

【参考方案5】:

您的控制器应如下所示:


    $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();

我觉得这个更适合你

【讨论】:

以上是关于如何使用 Codeigniter 将 JQuery datepicker 中的值插入 MySQL 日期数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JQuery 将 HTML 表单字段作为数组直接传递到 CodeIgniter 中的数据库

如何在 Codeigniter 中使用 JQuery 修复未定义的 url

如何使用 Codeigniter 和 Jquery 验证多维数组

Codeigniter:如何使用 jQuery 添加带有多选和删除复选框的列

Codeigniter--将“活动”css类添加到链接,如何?

如何使用带有codeigniter的数据库中的JQuery使用自动完成功能?