如何使用 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 一起使用。这是我的代码:
<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-01
到9999-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 添加带有多选和删除复选框的列