0

クライアントテーブルにレコードを挿入した後、オプションの生年月日フィールドがあります。

挿入後のデフォルト値は「000-00-00」です。

ここで、テーブルのレコードを編集し、birth_date フィールドの値を 3 つのドロップダウン リストに取得したいと考えています。

3 つのドロップダウン リストは、日、月、および年です。

生年月日がない場合、3 つのドロップダウンの選択値は「日」、「月」、および「年」である必要があります。

次のコードを試しましたが、これが最善の方法かどうかわかりません。

$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']));
}

これに対するより良い方法があれば、私に知らせてください。

ところで、私はコードイグナイターを使用しています。

4

2 に答える 2

2

テストの実行が遅すぎると思います。$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);
于 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 に答える