从<select>标记中取三个值,并在SQL&#34; DATE&#34;?</select>中将它们连接在一起

时间:2014-05-17 21:18:28

标签: php html mysql sql

我一直致力于设计一个MediaWiki扩展,询问用户的出生日期,然后将其存储在用户数据库中。到目前为止,我已经通过输入框设置了这个工作(如果用户输入它像“2007-04-06”)。你可以说,这非常低效。

所以 - 这个数据在SQL数据库中存储为“DATE”类型(命名为user_birthdate),需要YYYY-MM-DD格式。

我不想让用户手动输入这些数据,而是让我有一个预设值的下拉列表,如下所示:

<select name="birthdate-year" id="birthdate-year">
 <option value="2005">2005</option>
 <option value="2006">2006</option>
 <option value="2007">2007</option>
</select>

<select name="birthdate-month" id="birthdate-month">
 <option value="01">January</option>
 <option value="02">February</option>
 <option value="03">March</option>
</select>

<select name="birthdate-day" id="birthdate-day">
 <option value="01">1</option>
 <option value="02">2</option>
 <option value="03">3</option>
</select>

我的问题是,到目前为止,我已经使用JavaScript和HTML5完全 这是我想知道的:

如何将这些选项组合为一个值,以便以正确的格式发送数据?就像用户选择“1997”,“04”和“03”一样,我希望它成为一个整体值“1997-04-03”。

2 个答案:

答案 0 :(得分:0)

有三个选择列表会使最终用户的任务比单个框更耗时,并且您仍然需要验证输入(即避免像2月31日那样)。

为什么不使用某种日期选择器或日历来完成大部分工作?

有关如何执行此操作的示例,请尝试here

答案 1 :(得分:0)

PHP:

<?php

// get values from post
$birthdate-year = $_POST["birthdate-year"];
$birthdate-month= $_POST["birthdate-month"];
$birthdate-day= $_POST["birthdate-day"];

// make string from values
$goodDate = $birthdate-year."-".$birthdate-month."-".$birthdate-day;
echo $goodDate; 

// or make object datetime from values 
$goodDate2 = new DateTime();
$goodDate2->setDate($birthdate-year, $birthdate-month, $birthdate-day);
echo $goodDate2->format('Y-m-d'); 

?>

JavaScript的:

<script>
var year = document.getElementById(birthdate-year).value;
var month = document.getElementById(birthdate-month).value;
var day = document.getElementById(birthdate-day).value;

var goodDate = year+"-"+month+"-"+day;

alert(goodDate);
</script>