【发布时间】:2016-01-29 11:40:52
【问题描述】:
作为出生日期的表单输入选择日历前端并存储为mysqli。
我不知道有人说该怎么做。因为我是php新手。
【问题讨论】:
-
请展示你所做的工作。
-
欢迎来到 SO,请在提问时更具体一点:您尝试过什么,您期望什么等。请参阅how to ask
标签: javascript php html mysqli
作为出生日期的表单输入选择日历前端并存储为mysqli。
我不知道有人说该怎么做。因为我是php新手。
【问题讨论】:
标签: javascript php html mysqli
您可以使用 jQuery UI 日期选择器。你可以找到它的文档here
让我们首先包含并启动插件
/* include files needed */
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
/* initiate plugin */
<script>
$( "#date" ).datepicker({dateFormat: "yy-mm-dd"});
</script>
选择器将是您的日期input,如下所示:
<input type="text" id="date" name="date">
然后以您通常的方式存储日期。记住日期格式必须是YYYY-MM-DD
【讨论】:
使用
<input type="date" name="birthDate">
$birthDate = $_POST['birthDate'];
使用 strtotime 您可以以 yyyy-mm-dd 格式存储日期。
$newDOB = date('Y-m-d', strtotime($birthDate));
【讨论】:
按照以下四个步骤完成您的需求设置。只需要创建 db 结构即可。
1. 配置 Datepicker 以使用 altField(http://api.jqueryui.com/datepicker/#option-altField) 及其 altFormat 选项以支持的格式提供日期:
<input type="hidden" id="actualDate" name="actualDate"/>
$( "selector" ).datepicker({
altField : "#actualDate"
altFormat: "yyyy-mm-dd"
});
或者,如果您希望用户以 YYYY-MM-DD 格式查看日期,只需设置 dateFormat option:
$( "selector" ).datepicker({
dateFormat: "yyyy-mm-dd"
});
2. 使用 MySQL 的 STR_TO_DATE() 函数转换字符串:
INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
3. 将从 jQuery 接收的字符串转换为 PHP 理解为日期的内容,例如 DateTime 对象:
$dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
and then either:
- 获取合适的格式化字符串:
$date = $dt->format('Y-m-d');
- 获取 UNIX 时间戳:
$timestamp = $dt->getTimestamp();
which is then passed directly to MySQL's [FROM_UNIXTIME()][3] function:
INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))
4. 手动将字符串操作为有效的文字:
$parts = explode('/', $_POST['date']);
$date = "$parts[2]-$parts[0]-$parts[1]";
希望对您有所帮助!
【讨论】:
<input type="date" name="bday">
试试这个从用户那里获取出生日期。
然后在 PHP 中转换
<?php
$dob = date('Y-m-d', strtotime($_POST['bday']));
?>
【讨论】: