继续my earlier question,如何将月,日和年<select>
合并为一个“日期”值,以便它以
$_POST['date']
,采用MySQL格式YYYY-MM-DD
?
答案 0 :(得分:11)
你可以使用一个隐藏字段并在onSubmit上构建它的值,但是如果我是你,我只是在name属性中使用数组表示法,并用' - '作为粘合剂内爆数组:像这样
<select name="date[year]">
...
<select name="date[month]">
...
<select name="date[day]">
...
php:
$date = implode('-', $_POST['date'])
//validate date format here
答案 1 :(得分:6)
将它与PHP脚本结合使用,没有理由为此添加对JavaScript的依赖。 Build on things that work。此外,如果您在服务器上执行此操作,则不会受到太多潜在的恶意或意外干扰。
答案 2 :(得分:2)
如果你想这样做,我建议你采取以下步骤:
<input type="text" name="wtv" />
,并在消息中指明预期的格式YYYY-MM-DD
。<input type="text" name="wtv" />
成为type="hidden"
;还添加了三个<select>
元素 - 一个用于日,月和年。请勿提供这些<select>
元素name
属性。onchange
元素添加<select>
事件处理程序,以便在修改后,更改原始<input type="hidden" name="wtv" />
的值以反映所选值。表单提交后,由于<select>
元素没有name
属性,因此不会将其信息发送到服务器,但隐藏的<input />
确实有名称,因此它将被发送,格式化为日期。
我之前实际上已经编写过这样的小部件...我会尝试获取一个演示页面并链接到它。
答案 3 :(得分:2)
如果您执行以下操作,则可以获得所需的结果。
<form method="post">
<select name="date[]" id="year">
<option>2010</option>
<option>2011</option>
</select>
<select name="date[]" id="month">
<option>8</option>
<option>9</option>
</select>
<select name="date[]" id="day">
<option>21</option>
<option>22</option>
</select>
<input type="submit">
</form>
结果$_POST
var包含以下
Array
(
[date] => Array
(
[0] => 2011
[1] => 9
[2] => 22
)
)
然后您需要做的就是$date = implode('-', $_POST['date']);
答案 4 :(得分:1)
您可以创建隐藏字段,并在表单提交之前填写
答案 5 :(得分:1)
分别收集这些数据的目的是确保其格式正确。如果您向php脚本提交完整的日期,那么php脚本的验证选项将更加复杂。最好提交3个表单字段,以简单的方式验证它们,然后在php中创建日期。
如果您坚持提交完整的日期,隐藏字段(如@kgb所说)可能是最简单的方法。
答案 6 :(得分:0)
您可以使用javascript或php本身来执行此操作,但是没有本机xhtml意味着可以实现这一点(据我所知)。
如果您使用javascript来实现这一点(使用隐藏字段将数据提交到您的php脚本),您仍然需要在使用php处理或将数据插入数据库之前验证服务器端的字段。出于这个原因,我将跳过javascript选项,直接进行我使用的php方法。
我假设日期 dd 形式的数字数据, mm 月份和 yyyy 年份:
$day = $_POST['day']; // assume 23
$month = $_POST['month']; // assume 06
$year = $_POST['year']; // assume 2010
$mysql_date_format = $year . "-" . $month . "-" . $day; // should result in 2010-06-23
根据需要在脚本中使用$mysql_date_format
。
答案 7 :(得分:0)
我从你的原帖中注意到你正在使用jQuery的Datepicker()
插件来获取日期。为什么不将default date format设置为'yy-mm-dd'
?
如果要在到达PHP时验证格式,请使用
date('Y-m-d', strtotime($_POST['date']));