Php 如何在三个下拉列表中检索日期?

Php 如何在三个下拉列表中检索日期?,php,codeigniter,Php,Codeigniter,我有一个birthdate字段,在将记录插入clients表之后,该字段是可选的 插入后,默认值为“000-00-00” 现在,我想编辑表中的记录,并将出生日期字段的值放入三个下拉列表中 三个下拉列表是日、月和年 如果没有生日,则三个下拉列表的选定值应为“日”、“月”和“年” 我尝试了以下代码,不知道这是否是最好的方法 $dateValue = '0000-00-00'; $year = explode("-", $dateValue); if ($year[0] == "0000") {

我有一个birthdate字段,在将记录插入clients表之后,该字段是可选的

插入后,默认值为“000-00-00”

现在,我想编辑表中的记录,并将出生日期字段的值放入三个下拉列表中

三个下拉列表是日、月和年

如果没有生日,则三个下拉列表的选定值应为“日”、“月”和“年”

我尝试了以下代码,不知道这是否是最好的方法

$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的问答形式中是没有效果的。