• ベストアンサー

PHPとプルダウンメニュー

PHPで以下のことをやりたいのですが、どうしてもうまく出来ません。経験の有る方、どうぞ宜しくお願い致します。 2つのプルダウンメニューがあり、1つ目のプルダウンメニューから選択時、選択された値に関連する項目をDBより2つ目のプルダウンメニューに登録したいのです。 ちなみにDBはOracleを使用しています。 プルダウンメニューから選択時は、どのようなイベント(?)が発生するのでしょうか? もし、PHPで出来ない場合、他にどのような方法がありますか? 宜しくお願い致します。

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

  • ベストアンサー
  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

これって簡単そうで、結構難しいんですよね(^^; 良くある 1:都道府県を「プルダウン1」にて選択する 2:選択された都道府県により、その都道府県に属する市町村を「プルダウン2」にセットする て感じの奴でしょ? phpはサーバーサイドスクリプトなんで、クライアントの操作(一つ目のプルダウンを選択する行為)に関して、何ら回答をしてくれません。 では、どうするのか? これを説明しようとすれば、莫大な労力が必要ですので、ヒントだけ。 結論は、フレームとJavaScriptを利用すます。 まず、そのページをフレームで構成します。 <html> <head></head> <frameset cols="*,0"> <frame src="main.php" name="main"> <frame src="hidden.php" name="hidden" scrolling="no"> </frameset> <noframes> </noframes> </html> こうしておいて、main.phpとhidden.phpを作っておきます。 hidden.phpはユーザーが意識しなければ、見えません (<frameset cols="*,0">と表示範囲を0にしているから) で、main.phpでプルダウン1が選択されたとき、その選択されたセル(当然プルダウン1)をJavaScriptで todofuken=document.input.elements[i].value; top.hidden.location.href ="hidden.php?id="+todofuken+"&cel_num="+i; といった形で、hidden.phpに送ってやります。 ここでcel_numとは、返値が入るセル、つまりプルダウン2を指します。 続いて、hidden.phpは、$_GET["todofuken"]と$_GET["cel_num"]という二つのデータを受け取ります。 まず、todofukenで、プルダウン1で選択された都道府県が分かるので、それを元にsql文を発行します。 上記の例では、 $sql="SELECT sichosoun FROM tabele_name WHERE todofuken="$_GET[todofuken]"; の様な感じですね。 で、抽出されたデータを同様の手順でmain.phpに戻してやるのです。 と、書いてきましたが、これだけで理解できれば、凄いです(笑) 我ながら凄く意味が分かりにくい(^^; と言うか、9091さんがやりたいことは、凄く分かりにくいことなのです。 ただ、理論的にはこれで可能ですし、私は何度もこの手のコードをこの方法で書いてきました。 頑張ってください

その他の回答 (1)

  • duckling
  • ベストアンサー率47% (88/185)
回答No.2

# 1 の方もおっしゃっているように、 サーバサイドスクリプトでは、 プロダウンメニューが選択された時に発生するイベントというものはありません。 なので、クライアントサイドスクリプトに頼ることになるのですが、 私も違う方法を考えてみました。 #------------------------------------------- プルダウン1から呼び出される可能性がある変数を あらかじめJavaScriptの変数に格納しておく。(笑 <荒技です。 そして、JavaScriptで <select>のOnChangeの時に プルダウン2の中身をJavaScriptで形成する。 #------------------------------------------- ちなみに、この方法は使ったことはないので 使える(有用)かどうかは分かりません。かなりの荒技ですし。(笑 (情報が少ない場合はいいのでしょうが。) もうひとつは、 #------------------------------------------- JavaScript の OnChange 時に、 選択されたselectをURLに格納し、JavaScript の location.href で飛ばし、 PHPでページごと再表示する。 #------------------------------------------- こんな感じですね。こっちは正攻法といった感じですが。 あとは言語を変えるしかないかも知れませんねぇ。

関連するQ&A