質問: 連動させたいセレクトボックスについて。 こんにちは。db+phpが初心者のものです。 前にもここで質問させていただきましたが、 自分なりにコードを書いてみたので コードの訂正、ご教授をよろしくお願いいたします。 セレクトボックス1には、[table 1]の、種類が入り れレクトボックス2には、[table 1]の種類に連動して、[table 2]の名前が選択できるようにする。 下記のようにソースを書いてみましたが、 table1の値は、セレクトボックスでちゃんと表示されますが、table2はセレクトボックスは表示されるものの、何も値がありません(t_t) 動きとしては、table1のセレクトボックスで選択したら、その項目をdbへ問い合わせ、その項目に対応した、dbに登録されているtable2の値を二つ目のセレクトボックスに表示させたいです。 ------------- php //db接続 $dbcon=mysql_connect("localhost","abcd","defg"); //db選択 mysql_select_db("zozozo"); //table1を取得 $res=mysql_query("select distinct * from table1"); while ($rows=mysql_fetch_array($res)) { echo " ------------- //table1に連動して項目を変えたいところのコード $res1=mysql_query("select * from table2 where key =$_post[mkoumoku] order by id"); while ($rows=mysql_fetch_array($res1)) { echo "
回答: #1さんの言うとおり$_post[mkoumoku]が問題です。 コーテーションの中でやるなら {$_post[mkoumoku]}とする必要があります。 さもなくば1度コーテーションの外で "文字".$_post['mkoumoku']."文字"としてください。 しかも$_post['mkoumoku']がヌルのときには sqlのエラーになるので、かならずsql文の中では シングルコーテーションで囲みましょう。 さて、前の書き込みに真っ先に回答つけましたが 本質的にajaxなどで処理しない限りこの手のことは できません。ただ単なるjavascriptでも以下のように すればいけます。ちゃんとsubmitを用意すれば、 javascriptが使えない環境の人でも使えます。 ユーザビリティを常にあたまにいれておきましょう。 それと素人にありがちなのですが、コードを埋め込み すぎです。自分で書いてて何がなんだかわからなく なりませんか? dbによる検索部分と、htmlの表示部分はヒア ドキュメントをつかって極力処理をわけたほうが よいと思います。 以下未検証なので動く保証はありませんが・・・ php $dbcon=mysql_connect("localhost","abcd","defg"); mysql_select_db("zozozo"); $res=mysql_query("select distinct * from table1"); while ($rows=mysql_fetch_array($res)) { $flg=(($rows['id']==$_post['mkoumoku'])?"selected":""); $select_mkoumoku.=<<