PHPで年月日を入力(プルダウン方式)

(1/1)
PHP でプルダウンメニューを使って年月日を入力するフォームを作る。日数は大の月と小の月によって変わるようにし、とくに閏年の 2 月の入力に気をつける。

サンプル・プログラム

ある年月に対応する日数をプルダウンメニューにする

0118: //--日
0119:     $dd = getDaysInMonth($year$month);
0120: $outstr .=<<< EOD
0121: <select name="day" onChange="submit();">
0122: 
0123: EOD;
0124:     for ($d = 1; $d <= $dd$d++) {
0125:         $selected = ($d == $day) ? 'selected' : '';
0126: $outstr .=<<< EOD
0127: <option value="{$d}" {$selected}>{$d}</option>
0128: 
0129: EOD;
0130:     }
0131: $outstr .=<<< EOD
0132: </select>日
0133: 
0134: EOD;

プルダウンメニューは、年(year)、月(month)、日(day)を別々のタグにする。
ここでは、日(day)の作り方のみを解説する。

ある年(year)、月(month)の日数は、「PHP で祝日を求める」で紹介したユーザー関数 getDaysInMonth を流用する。
getDaysInMonth で得られた値だけ、for ループを回し、option タグを発生させる。
この際、引数として与えられた $day と同じ日には selected 属性を付けておく。

このプルダウンメニューが変化したら、JavaScript の onChange イベントで submit 駆動し、form 内容を送信するようにしている。これは年(year)、月(month)の場合も同様で、これを行うことで、年・月を変更した際に月の日数を計算し直すことになる。

ただし、いちいちサーバサイドで計算させることはサーバに負荷がかかるので、この処理は、本来はクライアントサイドで JavaScript で行わせるのが良いだろう。JavaScript による処理については、いずれどこかで紹介したい。

参考サイト

(この項おわり)
header