年月日プルダウン簡単作成

htmlタグのプルダウンメニューを簡単に作成します。
特に年月日を入れるときに役に立ちます。

1
2
3
4
5
6
7
8
9
10
11
<select name="year">
<option value="1950">1950</option>
<option value="1949">1949</option>
<option value="1948">1948</option>
<option value="1947">1947</option>
<option value="1946">1946</option>
<option value="1945">1945</option>
・
・
・
・

このように数字をひとつずつ入れなくてもphpのfor文を使えば、ほんの数行で終わります。


スポンサーリンク

デモサイト

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<select name="year">
<?php
$now = date("Y");
for($i = 1950; $i<= $now; $i++):?>
<option value="<?php echo $i;?>"><?php echo $i;?></option>
<?php endfor;?>
</select>
年
<select name="month">
<?php
for($i = 1; $i<=12; $i++):?>
<option value="<?php echo $i;?>"><?php echo $i;?></option>
<?php endfor;?>
</select>
月
<select name="day">
<?php 
for($i = 1; $i<=31; $i++):?>
<option value="<?php echo $i;?>"><?php echo $i;?></option>
<?php endfor;?>
</select>
        日

もっと簡単に記述してみました。関数を作っておけばもっと楽!下記は上記と同じ物です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<select name="year">
<?php optionLoop('1950', date('Y'));?>
</select>
年
<select name="year">
<?php optionLoop('1', '12');?>
</select>
月
<select name="day">
<?php optionLoop('1', '31');?>
</select>
日
<?php
//セレクトオプションのループ設定
function optionLoop($start, $end){	
	for($i = $start; $i <= $end; $i++){
		echo "<option value=\"{$i}\">{$i}</option>";
	}
}
?>

引数を増やして初期選択値を付け加えました。3番目の値が初期値です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<select name="year">
<?php optionLoop('1950', date('Y'), '2000');?>
</select>
年
<select name="year">
<?php optionLoop('1', '12', '6');?>
</select>
月
<select name="day">
<?php optionLoop('1', '31', '15');?>
</select>
日
<?php
//セレクトオプションのループ設定
function optionLoop($start, $end, $value = null){
 
	for($i = $start; $i <= $end; $i++){
		if(isset($value) &&  $value == $i){
			echo "<option value=\"{$i}\" selected=\"selected\">{$i}</option>";
		}else{
			echo "<option value=\"{$i}\">{$i}</option>";
		}
	}
}
?>

さらに$start値を倍数増やしていく方法です。2だったら2,4,6,8,10,12,14….

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
//セレクトオプションのループ設定
function optionLoop($start, $end, $value = null){
 
	for($i = $start; $i <= $end; $i++){
		if ($i % $start == 0) {
			if(isset($value) &&  $value == $i){
				echo "<option value=\"{$i}\" selected=\"selected\">{$i}</option>";
			}else{
				echo "<option value=\"{$i}\">{$i}</option>";
			}
		}
	}
}
?>
Pocket
LINEで送る

3件のコメント

  1. ものすごく助かりました!ひとつ加えて教えてほしいのですが、
    年の最大を、例えば1900年で止める方法を教えて下さい!

    1. 例えば1800年から1900年までだと下記のように出来ます。

      <select name="year">
      <?php optionLoop('1800', '1900');?>
      </select>
      年
      <select name="year">
      <?php optionLoop('1', '12');?>
      </select>
      月
      <select name="day">
      <?php optionLoop('1', '31');?>
      </select>
      日
      <?php
      //セレクトオプションのループ設定
      function optionLoop($start, $end){	
      	for($i = $start; $i <= $end; $i++){
      		echo "<option value="{$i}">{$i}</option>";
      	}
      }
      ?>
  2. これは良いですね!コードをシンプルにすることができました。
    DBの日付けとの関連で月と日を0埋めしたいのですが、いい方法はありますでしょうか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です