- ベストアンサー
セレクトボックスの内容を表示させる方法について
- 現在、PHP画面を使って登録画面を作成しています。必要事項を打ち込んだら、「確認」のボタンを押し、ページジャンプして打ち込んだ内容を確認させその内容でよければ「登録」ボタン、修正したければ「修正」ボタンといった流れで、修正ボタンを押すと必要事項を打ち込んだ画面に戻るようにしています。
- セレクトボックス(<select>)に最初に打ち込んだ内容を表示させる方法についてですが、input typeのtextで打ち込んだ内容と同様にセッションや変数を使って取得し、選択された値を指定して表示させることができます。
- 具体的な手順としては、セレクトボックスの各オプションに対して、選択されているかどうかを判定し、選択されている場合にはselected属性を追加することで、最初に選択された内容を表示させることができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
超ざっくり書いてますが、俺は こういう書き方をします。 $DimSex = Array(0 => "選択してください" , 1 => "女" , 2 => "男"); $Sex = $_REQUEST[Sex]; $SelectSex = "<select name=Sex>\n"; foreach($DimSex as $i => $value) { $chk = ($Sex == $i) ? "selected" : ""; $SelectSex.= "<option value=$i $chk>$value"; } $SelectSex .= "</select>";
その他の回答 (1)
- nak2052
- ベストアンサー率60% (3/5)
まず、確認画面の「修正」ボタンと「登録」ボタンはそれぞれ二つのformに分けなければなりません。修正ボタンのあるformのactionの指定は最初のページになります。 最初の画面からうけたformの内容はhiddenタグで書きこんで両方のformの中に書いておきます。 ここまではやってられるでしょうか? ちなみにformを二つ使うと「修正」ボタンと「登録」ボタンを二つ綺麗に並べるのに苦労します。tableタグかcssを駆使して下さい。 で、戻ったformの記述は分かりやすく書くと: <?php $sex_selected[$_POST['sex']] = ' selected="selected"'; ?> <select name="sex"> <option value="male"<?=$sex_selected['male'];?>>男性</option> <option value="female"<?=$sex_selected['female'];?>>女性</option> </select> これはphpをhtmlに埋め込んで使うやり方ですが、他にもいろいろやり方はあります。 多分これが一番シンプルかと思います。 $_POST['sex']に'male'が入っていれば、$sex_selected['male'] の値が' selected="selected"'になり、逆に$_POST['sex']に'female'が入っていれば、$sex_selected['female'] の値が' selected="selected"'になります。 maleやfemaleは数字に置き換えてもいいです。 これはラジオボタンやチェックボックスでは$sex_selected[$_POST['sex']] = ' checked="checked"'; と書き換えられます。