Php 如何在三个下拉列表中检索日期?
我有一个birthdate字段,在将记录插入clients表之后,该字段是可选的 插入后,默认值为“000-00-00” 现在,我想编辑表中的记录,并将出生日期字段的值放入三个下拉列表中 三个下拉列表是日、月和年 如果没有生日,则三个下拉列表的选定值应为“日”、“月”和“年” 我尝试了以下代码,不知道这是否是最好的方法Php 如何在三个下拉列表中检索日期?,php,codeigniter,Php,Codeigniter,我有一个birthdate字段,在将记录插入clients表之后,该字段是可选的 插入后,默认值为“000-00-00” 现在,我想编辑表中的记录,并将出生日期字段的值放入三个下拉列表中 三个下拉列表是日、月和年 如果没有生日,则三个下拉列表的选定值应为“日”、“月”和“年” 我尝试了以下代码,不知道这是否是最好的方法 $dateValue = '0000-00-00'; $year = explode("-", $dateValue); if ($year[0] == "0000") {
$dateValue = '0000-00-00';
$year = explode("-", $dateValue);
if ($year[0] == "0000") {
$selected_year = "Year";
$selected_month = "Month";
$selected_day = "Day";
}else{
$selected_year = date("Y",strtotime($user['birth_date']));
}
如果有更好的方法,请告诉我
顺便说一句,我使用的是codeigniter。我认为您进行测试太晚了,直接在$dateValue上进行测试要简单得多。此外,您还可以通过使用以下函数简化代码:-
$dateValue = '0000-00-0';
if($dateValue == '0000-00-00'){
$values = array('Year', 'Month', 'Day');
} else {
$values = explode('-', $dateValue);
}
list($selected_year, $selected_month, $selected_day) = $values;
var_dump($selected_year);
var_dump($selected_month);
var_dump($selected_day);
提供以下输出:-
string 'Year' (length=4)
string 'Month' (length=5)
string 'Day' (length=3)
将第一行更改为:-
$dateValue = '2012-11-3';
给出:-
string '2012' (length=4)
string '11' (length=2)
string '3' (length=1)
就我个人而言,我会将这一切隐藏在一个函数中,以提高可读性:-
function getValues($dateValue = '0000-00-00'){
if($dateValue == '0000-00-00'){
$values = array('Year', 'Month', 'Day');
} else {
$values = explode('-', $dateValue);
}
return $values;
}
然后像这样使用它:-
list($selected_year, $selected_month, $selected_day) = getValues('2012-11-03');
var_dump($selected_year);
var_dump($selected_month);
var_dump($selected_day);
我的建议是使用date_format mysql函数在您的查询中获得年、日和月,如下所示
select *,DATE_FORMAT(date_field,'%Y') as selected_year,
DATE_FORMAT(date_field,'%d') as selected_day,
DATE_FORMAT(date_field,'%c') as selected_month
from user_table;
有关日期格式的更多信息,请查看此链接
或者mysql文档谢谢。我只是担心日期格式是否会从Y/m/d变为我不知道的格式。这可能吗?这取决于它来自哪里。如果您可以控制日期源的格式,那么就这样做。如果您建议代码的实际错误,并询问解决方法,您可以在这里进一步了解。询问是否有更好的方式可能会引发争论,这在StackOverflow的问答形式中是没有效果的。