如何将日期检索到三个下拉列表?

时间:2012-11-04 07:16:34

标签: php codeigniter

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

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

现在,我想编辑表中的记录,并希望将birth_date字段的值放入三个下拉列表中。

三个下拉列表是日,月和年。

如果没有生日,则三个下拉列表的选定值应为“日”,“月”和“年”。<​​/ p>

我尝试了以下代码,但不知道这是否是最佳方法。

$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。

2 个答案:

答案 0 :(得分:2)

我认为你的测试太迟了,直接在$ dateValue上做起来要简单得多。此外,您可以通过使用list函数来简化代码: -

$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);

答案 1 :(得分:0)

我的建议是使用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;

了解更多信息date_format请查看此链接 Date_format

或mysql doc