生年月日をプルダウンで自動で作成:PHP
フォームなどで生年月日を入力してもらうときに
テキストにするか、プルダウンにするか悩んだすえ
やっぱりプルダウンのほーが使いやすいかと思ったので、
今回は生年月日のプルダウンをPHPで自動生成するやり方をメモ。
≫サンプル
PHP記述
西暦 //年のプルダウン <select name="year"> <option value="">選択</option> <?php for ($y=1900;$y<date(Y)+1;$y++){ //(最小値;現在の年;$y++) $sel=""; //選択された値があれば$selにselected="selected"を格納 if($_SESSION["year"] == $y) { $sel = "selected='selected'"; } //出力 print '<option value="'.$y.'"'.$sel.'>' . $y . "</option>\n"; } ?> </select>年 //月のプルダウン <select name="mon"> <option value="">選択</option> <?php for ($m=01;$m<=12;$m++){ //(最小値;最大値;$m++) $sel = ""; //選択された値があれば$selにselected="selected"を格納 if($_SESSION["mon"] == $m) { $sel = "selected='selected'"; } //出力 print '<option value="'.sprintf("%02d",$m).'"'.$sel.'>' . sprintf("%02d",$m) . "</option>\n"; } ?> </select>月 //日のプルダウン <select name="day"> <option value="">選択</option> <?php for ($d=01;$d<=31;$d++){ //(最小値;最大値;$d++) $sel = ""; //選択された値があれば$selにselected="selected"を格納 if($_SESSION["day"] == $d) { $sel = "selected='selected'"; } //出力 print '<option value="'.sprintf("%02d",$d).'"'.$sel.'>' . sprintf("%02d",$d) . "</option>\n"; } ?> </select> 日
てな感じでOK。
sprintf(“%02d”,$m)などの部分に使っている
sprintf()関数は、文字列を指定書式へ整形する関数です。
■指定書式の例
- 「%s」:文字列を出力
- 「%d」:数字を出力
- 「%02d」:2桁の数字を出力します。数字が2桁に満たない場合には0で埋めます。(例:1→01)
- 「%.2f」:小数点2桁までを出力します。(例:3.14159→3.14)
つまりsprintf(“%02d”,$m)という部分は
1/2/3/…..10/11/12/
↓ 上記の書式を変換
01/02/03/…..10/11/12/
というふうに頭に0を挿入する場合に必要になります。