0

我有一个生日字段,在将记录插入客户表后是可选的。

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

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

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

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

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

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

4

2 回答 2

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);
于 2012-11-04T08:18:24.267 回答
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 文档

于 2012-11-04T11:35:55.840 回答