• ベストアンサー

プルダウンリスト(コンボボックス?)でひとつ選択し、その値を別のページで表示させる方法はないのでしょうか。

お世話になっております。 ひとつわからないのですが、 たとえば、プルダウンには、”選択してください”、”東京”、”大阪”、”沖縄”と入っているとします。ここで、”大阪”を選び、別ページ”A”で値を$_postで受け取るとします。選択済みは”選択してください”です。 このページ”A”は再編集するためのページです。ページ”A”を開くと、先ほど選択した”大阪”をプルダウンメニューの初期設定(選択済み)にするにはどうしたらいいのでしょうか。 申し訳ございませんが、ご教授願います。よろしくお願いいたします。

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.3

こんにちは。 PHP側で処理する方法、JavaScriptで処理する方法 と考えられます。 1.PHP側での処理(コンボボックスの表示が固定) $location = $_POST['location']; print "<select name=\"location\">\n"; if ( $location == "東京" ) {  print "<option value=\"東京\" celected>東京\n"; } else {  print "<option value=\"東京\">東京\n"; } if ( $location == "大阪" ) {  print "<option value=\"大阪\" celected>大阪\n"; } else {  print "<option value=\"大阪\">大阪\n"; } // 以下コンボボックスの項目分処理の追加が必要 2.配列やDBよりコンボボックスの表示内容を取ってる場合 // 例は配列 $location = $_POST['location']; $selArr = array ( "選択して下さい","東京","大阪","沖縄"); print "<select name=\"location\"> for ( $i = 0; $i < count($selArr); $i ++ ) {  $selected = "";  if ( $location == $selArr[$i] ) {   $selected = " selected";  }  print "<option value=\"".$selArr[$i]."\"$selected>".$selArr[$i]."\n"; } print "</select>\n"; 1.はコンボボックスの表示内容は固定で書いています。 postで取得した値がoptionを書き出す部分で 一致した場合にselectedを追加した形で出力します。 項目が増えると、その分ifを追加しないといけません。 2.は配列でコンボボックスに表示するものを準備しておき、 展開して表示する形です。 (項目が増えても簡単に対応できるのでお勧めです。) 送信されたコンボボックスの内容と再編集ページで コンボボックスを配列より生成する際に比較を行い、 $selectedという変数にselectedを入れることにより デフォルトで選択される項目を制御しています。 2の処理だと項目が増えようが減ろうが、if文の追加等 は必要ないので楽ですよ。

tomofriend
質問者

お礼

とても丁寧なご回答ありがとうございます。 2番を参考にさせていただきます! 本当にありがとうございました。

その他の回答 (2)

  • cojirou
  • ベストアンサー率50% (59/117)
回答No.2

ページAのHTMLで、大阪のoptionタグにselected と記述すればいいのでは? ページAで受け取った値により、selectedと記述される optionが変わるようにする、ということ。 例えば、 <select> <option value="osaka" <?if($POST['chiiki'] == "osaka"){ echo("selected"); } ?> (同じように東京と沖縄のoptionも記述) </select> といった感じに。 参考までに書いたので、間違いなどは訂正してください。

tomofriend
質問者

お礼

回答ありがとうございます。とてもシンプルでわかりやすかったです。こうやればいいんですね。 参考になりました。本当にありがとうございます。がんばります!

  • agehage
  • ベストアンサー率22% (2752/12072)
回答No.1

引数で渡すだけではだめでしょうか?

tomofriend
質問者

お礼

ご回答ありがとうございます。ちょっと確認が遅れてしまいました。はやく一人でいろいろできるようにがんばりたいと思います。ありがとうございます。