こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

プルダウン 値保持 onchange

失礼します、現在年月のプルダウンを作成しており
プルダウン自体は年月の作成ができなのですが再読み込みした際に
プルダウンに選択した値を保持して欲しいです。
現在リダイレクト先を自身にしております。また、onChangeでプルダウンをした際に読み込むようにしています。
ご教授頂きたいです。宜しくお願い致します。

htmlに埋め込んでいるので読みにくいかと思いますがご了承ください

<form action="<?php $self ?>" method="POST">
<select name = "year" onChange="javascript:submit()">
<?php for ($y = 2000; $y < date(Y)+1; $y++) :?>
<?php if($s == 0) : ?>
<option value="<?php echo $y ?>">選択してください</option>;
<?php ++$s ?>
<?php endif; ?>
<option value="<?php echo $y ?>"><?php echo $y ?></option>
<?php endfor; ?>
</select>
<?php
$a = array('1月', '2月', '3月', '4月', '5月', '6月',
'7月', '8月', '9月', '10月', '11月', '12月');
?>
<select name = "month" onChange="javascript:submit()">
<?php foreach ($a as $key => $value) :?>
<?php $b = $key + 1 ?>
<?php if($h == 0) : ?>
<option value="<?php echo $y ?>">選択してください</option>
<?php ++$h ?>
<?php endif; ?>
<option value="<?php echo $b ?>"><?php echo $value ?></option>
<?php endforeach; ?>
</select>
</form>

投稿日時 - 2016-11-15 18:11:41

QNo.9256063

困ってます

質問者が選んだベストアンサー

<?php
//スクリプトを確認させていただいた上で、
//可読性を加味して、作り直します。

//一旦、もしこのスクリプトがPOSTされていたら、
//POSTされた値を受け取ります。
$year = "";
$month= "";
if(strtoupper($_SERVER['REQUEST_METHOD']) === 'POST')
{
$year = isset($_POST['year']) ? $_POST['year'] : "";
$month= isset($_POST['month'])? $_POST['month'] : "";
}

?>
<form action="<?php $self ?>" method="POST">
<select name = "year" onChange="javascript:submit()">
<option value="">選択してください</option>
<?php foreach (range(2000, date('Y')+1) as $y) : //目的が明確なのでrange関数で数値の範囲を取った方が見やすいかと?>
<?php $selected = ($y == $year) ? ' selected="selected"' : " ";?>
<option value="<?php echo $y ?>"<?php echo $selected?>><?php echo $y ?>年</option>
<?php endforeach; ?>
</select>
<?php
//POSTされる値は数値部分のみがほしいと読み取れますので、
//コレについても配列で初期化しなくても良いのではないでしょうか。
//$a = array('1月', '2月', '3月', '4月', '5月', '6月',
//'7月', '8月', '9月', '10月', '11月', '12月');
?>
<select name = "month" onChange="javascript:submit()">
<option value="">選択してください</option>
<?php foreach (range(1, 12) as $m) :?>
<?php $selected = ($m == $month) ? ' selected="selected"' : " ";?>
<option value="<?php echo $m ?>"<?php echo $selected?>><?php echo $m ?>月</option>
<?php endforeach; ?>
</select>
</form>
<?php
//いかがでしょうか。
?>

投稿日時 - 2016-11-16 00:14:16

お礼

すごい凄すぎます汗
まさに理想としていた動きをしてくれました( ノД`)
頑張って読み解いていこうとおもいます!!
ありがとうございました!!

投稿日時 - 2016-11-16 11:31:42

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問