PHPで年月日のセレクトフォームを作成する方法

PHP

PHPで年のみ年月、年月日のセレクトフォームを作成するサンプルコードです。

年のみのセレクトフォームを作成

年の期間を指定してセレクトフォームを作成

範囲をループ処理で作成していきます。サンプルでは1980年~2020年までのセレクトフォームを作成しています。

PHP

for ($i=1980; $i <= 2020; $i++) {
	$year .= '<option value="'.$i.'">'.$i.'年</option>';
}

echo '<select name="year">'.$year.'</select>';

表示結果

期間内の初期値を指定する場合

初期値に該当する場合に、selectedを付与しています。

PHP

for ($i=1980; $i <= 2020; $i++) {
	
	if($i == 2000){
		$year .= '<option value="'.$i.'" selected>'.$i.'年</option>';
	}else{
		$year .= '<option value="'.$i.'">'.$i.'年</option>';
	}

}

echo '<select name="year">'.$year.'</select>';

表示結果

年月のセレクトフォームを作成

年の期間を指定してセレクトフォームを作成

年月を一括でセレクトフォームにする為に、年のループ処理の中に月のループ処理を追加しています。

PHP

for ($i=2000; $i <= 2020; $i++) {
	for ($ii=1; $ii <= 12; $ii++) {
		$nengetu .= '<option value="'.$i.'-'.$ii.'">'.$i.'年'.$ii.'月</option>';
	}
}

echo '<select name="nengetu">'.$nengetu.'</select>';

表示結果

input type=”month”を使う

範囲が広い場合はinput type=”month”を使った方が、ユーザビリティも良くなるかもです。送信される値は「YYYY-MM」になります。

PHP

<input type="month" name="nengetu" min="2000-01" max="2020-12">

表示結果

年月日のセレクトフォームを作成

生年月日(誕生日)の入力欄などに。

個別にセレクトフォームを作成

PHP

for ($i=1920; $i <= 2020; $i++) {
		$year .= '<option value="'.$i.'">'.$i.'年</option>';
}

for ($i=1; $i <= 12; $i++) {
		$month .= '<option value="'.$i.'">'.$i.'月</option>';
}

for ($i=1; $i <= 31; $i++) {
		$day .= '<option value="'.$i.'">'.$i.'日</option>';
}

echo '<form>
<select name="year">'.$year.'</select>
<select name="month">'.$month.'</select>
<select name="day">'.$day.'</select>
</form>';

表示結果

input type=”date”を使う

またinput type=”date”を使う事で表示スタイルにブラウザ依存はありますが、簡単に実装する事が可能です。送信される値は「YYYY-MM-DD」になります。

<input type="date">

表示結果

PHP

Posted by ヨウスケ