• 締切済み

phpのリストボックスについて

よろしくお願いします。 phpを利用し、条件にあった内容を表示させる画面を作っています。 リストボックスで選択した内容を次のリストボックスの選択キーとして 別テーブルの検索条件に利用できるものでしょうか?? 以下のソースなんですが、 //------------------------------------------------------------- ソースA: print "<select name='brand' id='brand' style='width:190'>"; $sql ="select * from brand ORDER by no"; $res = mysql_query($sql); if ($res and mysql_num_rows($res)) { while($rec=mysql_fetch_array($res)){ echo "<option value='{$rec['name']}' >{$rec['name']}</option>"; } } print "</select>"; //-------------------------------------------------------------- とbrandテーブルからnameをリストボックス表示させます。 この表示し、選択した内容(仮にダイヤ)を同画面にあるもう一つの リストボックスで同じようなソースで別テーブルをselect文の検索キーに したいのです。以下のような感じ・・ //------------------------------------------------------------- ソースB: $sql ="select * from item where = 'ダイヤ'"; $res = mysql_query($sql); if ($res and mysql_num_rows($res)) { while($rec=mysql_fetch_array($res)){ echo "<option value='{$rec['itemname']}' >{$rec['itemname']}</option>"; } } print "</select>"; //-------------------------------------------------------------- の$sql ="select * from item where = 'ダイヤ'";←このダイヤを ソースAからもってきたいのですが、何かよい方法はありますか? 変数作ってやってみましたが、うまくいかずです。phpだけでは無理でしょうか?よろしくお願いします。

みんなの回答

  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.2

hajimete-san さん、レスありがとうございました。 さて、画面を再呼び出しする JavaScript ですが、以下のようにするのがよいでしょう: ------------------------------------- function sel() { document.frm.submit(); } ------------------------------------- で、これが動作する条件は以下の通りです: (1)form タグの名前を「frm」にする。 <form name='frm'> といったぐあい。 (2)select タグ(リストですね)に「onchange='sel();'」と記述する。 <select name='brand' onchange='sel();'> といったぐあい。 次に、画面を再呼び出し後、上記 select タグ(リストですね)の内容を受け取るには、 $a = $_REQUEST['brand']; と します(この画面を最初に呼び出した時点では、$a の内容はカラになります。再呼び出しで中身が入ります)。あとは、$a の内容をキーにしてデータベースを検索すればできると思います。 ご健闘を祈ります。ご不明の点があれば、追加でご質問どうぞ。

hajimete-san
質問者

お礼

hkd9001さん、再度回答ありがとうございます。 改めて、上記記述を参考にし、試したのですが,うまくいかずです。 まずはセオリーどおり、ヘッダ部でjsの記述を行い、 print "<select name='brand' id='brand' style='width:190' onChange='sel()'>";←思いっきりパクって と記述。予定ではココでセレクトしたbrand(例えば'ダイヤ')が $a = $_REQUEST['brand'];とすれば$a='ダイヤ'となると思うのですが、 ・・・・何か大事なことを見落としているような・・・画面再呼出し?? かもしれないです・・・もっと調べてみます。ありがとうございます。

  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.1

hajimete-san さん、こんばんは。 さてご質問の件ですが、JavaScript を組み合わせると可能かと思われます。ポイントは: (1)1番目のリストボックスの選択肢を変えたときに、この画面を再呼び出しする。これは JavaScriptの「onChange」という機能で実現できます。 (2)1番目のリストボックスに入っていた内容を、再呼び出しされた画面にて取り込み、これをキーにして2番目のリストボックスを表示させます。この取り込みは php の「$_REQUEST["brand"]」で できます。 以上をヒントに、頑張ってみてください。では!

hajimete-san
質問者

お礼

hkd9001さん、返事遅くなりました。 貴重なヒントありがとうございます。早速onChangeを利用し、試しました。 onChangeの動きはバッチリなのですが、ポイントの画面の再呼び出しと、このonChangeの内容を変数に入れ込むのがよくわからず、現在格闘中です。再呼び出しとは別画面へ移動ではないですよね?? もっと調べ、色々試してみたいと思います。ありがとうございます

関連するQ&A