- ベストアンサー
<select>文、foreachと初期値設定
- php始めたばかりの初心者です。以下をどのようにやればいいのか教えて下さい。
- (1)<select>文をforeachで(赤、青、黄)つくる (2)この選択したものを確認画面に飛ばし、修正が必要な場合に元の画面(ファイル)に戻るのですが、戻った時に最初に選択したものが初期値になるようにする
- ここまではなんとかわかるのですが、その先がわかりません。 ↓ <select name="color"> <?php $colors = array("赤","青","黄"); foreach($colors as $color){ print '<option value="'. $color. '">'.$color. '</option>'; } ?> </select> よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 まず、表示画面を以下のようにします。 何をしているかはコメントを参考にしてください。 基本はこんな感じになると思います。 応用してみてください。 <form action="confirm.php" method="post"> <select name="color"> <?php // 確認画面からのパラメータを取得 $defColor = isset($_POST['defcolor']) ? $_POST['defcolor'] : ''; $colors = array("赤","青","黄"); foreach ( $colors as $color ) { // ループ処理で順次色を出力する時に確認画面から送られてきた色と比較 // 一致した場合、$selectedに" selected"をセットする $selected = $color === $defColor ? ' selected' : ''; // $selectedを出力するようにする // すなわち、確認画面より送られてきた色が一致した場合はselectedが出力され、初期選択状態となる print '<option value="'. $color. '"'.$selected.'>'.$color. '</option>'; } ?> </select> <input type="submit" value="確認" /> </form> ==== 確認画面 <?php // 入力画面から選択された色を取得する $color = isset($_POST['color']) ? $_POST['color'] : ''; // 取得した色をしたのhiddenにセットし、戻るが選択された場合にdefcolorとして送信する // こうすることにより入力画面を開いた際に選択された色を初期選択状態とする ?> <form action="index.html" method="post"> 選択された色:<?= $color ?> <input type="hidden" name="defcolor" value="<?= $color ?>" /> <input type="submit" value="戻る" /> </form>
お礼
なるほど、こんなやり方があるんですね。 すごい! 大変参考になりました。 ありがとうございました。