• 締切済み

コンボボックス1の条件でコンボ2選択肢をクエリで動的に取得したい

早速ですが、現在PHP&Javascriptでサイト構築中です。 その中で、コンボボックス1で選択した条件でコンボボックス2の 選択肢を動的に変化させたいのですが、画面ロード時に全てのパターン を読み込むのではなく(これはサンプルを見つけました)、 コンボ1選択時にクエリを発行してコンボ2の選択肢を取得して 反映させることは可能でしょうか。 可能であれば、具体的な実現方法をご教示願えませんでしょうか。 未熟故、的外れな質問でしたらご指摘下さい。 よろしくお願いいたします。

  • AJAX
  • 回答数1
  • ありがとう数16

みんなの回答

noname#84373
noname#84373
回答No.1

<html> <head> <script type="text/javascript" src="prototype.js"></script> </head> <body> <form> <select id="a" onChange="changeOption('b',this.value)"> <option value="0" selected>好みは?</option> <option value="1">普通</option> <option value="2">やばい</option> </select><br> <select id="b"> </select> <script> function changeOption(id,val){ var tm = (new Date()).getTime(); new Ajax.Request('test.php', { method:'get', parameters:'menu='+val+'&c='+tm, onSuccess:function(oj){retData(id,oj.responseText); } }); } function retData(id,oj){ var dt=oj.split('\n'); var txt=[]; var val=[]; for(var i=0;i<dt.length;i++){ var buf=dt[i].split('\t'); val.push(buf[0]); txt.push(buf[1]); } setSelectOption(id,txt,val,val[0],val[0]); } function setSelectOption(id_name ,text_array, value_array, default_value, select_value){ var o = document.getElementById( id_name ); while( o.hasChildNodes() ) o.removeChild( o.lastChild ); for(var i=0, n, mx = text_array.length; i<mx; i++){ var n = new Option( text_array[i], value_array[i],(default_value==value_array[i]),(select_value==value_array[i])); try{ o.add( n, null) } catch( ex ){ o.add( n ); } } } </script> --------------- test.php <?php $menu=$_GET['menu']; $ret =''; switch( $menu ){ case '1': $ret="0\t指定してください\n1\t男\n2\t女"; break; case '2': $ret="0\t指定してください\n1\tオカマ\n2\tオナベ"; break; default: $ret="0\tありません"; break; } echo $ret;

smython
質問者

お礼

pipi様ありがとうございます。 ぱっと見、理解できませんでした;; 実際のものに落とし込み、ジックリ解析したいと存じます。 まずはお礼まで

関連するQ&A

  • リロード時もコンボボックスの内容を保持したい

    リロード時もコンボボックスの内容を保持したい select要素を使ったコンボボックスの作成で困っています。 1つ目のセレクトボックスで選んだ都道府県に対応した市を、 2つ目のセレクトボックスに反映させるところまではうまく行くのですが、 ページをリロード、あるいは遷移先から戻ってくると、 1つ目のセレクトボックスを別のものに再選択しないと2つ目が選べない状態になります。 対応方針として、ページロード時に都道府県を選んでいれば、 2つ目のセレクトボックスを再構築するサブルーチンの処理に回すことを考えたのですが(サンプルのコメントアウト部分です。)、 引数に問題があるのか、どうも再構築がうまく行きません。 現状のHTMLを活かしたまま、Javascriptの変更のみで 要望の動きを実現させる方法をご教示いただけないでしょうか。

  • クエリの条件式に複数のコンボBoxの値を参照させるには?

    コンボボックスで選択された値を元に選択を行わせるクエリを作成しています。 ですがある特定のコンボボックスからの値でなく、複数のコンボボックスの値を組み合わせて選択を行うのはどの様にしたら良いのでしょうか? テーブル名:テーブル1 クエリ名:選択クエリ1 選択の元になるフィールドはテーブル1内の[時刻]フィールドです。 ここは日付/時刻型になっており、表示形式は[YYYY/MM/DD HH:MM:SS]です。 この部分である範囲の選択を行いたいのですが、それの元となるコンボボックスを年/月/日/時/分/(秒)に分けたいと考えています。 (秒は無くても良い) 通常コンボボックスの値を参照する際は Like [Forms]![フォーム名]![コンボボックス名] という条件式を使いますが、複数のコンボボックスの値を組み合わせる場合はどのように記述したら良いのでしょうか? またクエリのデザインビューで出来ない場合はモジュールでの記述方法をご教授頂けるとありがたいです。 よろしくお願いいたします。

  • Access フォームコンボボックス空白をクエリで抽出したい

    現在access2000を使って、 フォーム1内にコンボボックスを作って コンボボックス内に1,2,3 と項目を入れています。 一方、クエリを使って、上記フォーム内のコンボボックスをつなげて1,2,3をそれぞれ抽出することはできるのですが、 1から3まで全てをiif関数などで 抽出したいと考えてします。 僕が考えた関数は iif(isnull([フォーム1][コンボ1]),is not null ,[フォーム1][コンボ1]) とクエリ抽出条件内に入力すると、結果は、 1、2、3をそれぞれフォームコンボボックスで選択すれば、クエリに反映されるのですが、コンボボックス内を「空白」の状態にすると、1,2,3すべてがクエリで抽出されるのではなく、何も抽出されないという結果になってしまいます。 どうすれば、クエリで1から3すべてを抽出することができるのでしょうか?多分、iif関数内の「空白」は空白として処理されないような気がします。 よろしくお願いします。

  • コンボボックス全ての値を取得させるには

    アクセスでクエリの抽出条件にコンボボックスで取得した値を反映させ、テーブルを 作成しエクスポートさせるマクロを組んでいるのですが、 ひとつひとつ実行させるのが手間なので、コンボボックス全ての値を取得させ クエリの抽出条件にひとつひとつ反映させてテーブル作成・エクスポート というマクロを組みたいのですが可能でしょうか?

  • コンボボックス選択時に関連する情報をテキストボックスに表示させたい。

    現在、以下のようなものをJavaScriptで実現しようとしているのですが、方法がわからないので質問させていただきます。 DBに商品テーブルがあって、カラムが「商品コード」「商品名称」「金額」だとします。 画面にはコンボボックスと右横にテキストボックスがあって、 コンボボックスには商品名称のみ表示、金額はテキストボックスに表示します。 (商品コードは<option>のvalueに設定します) サーバにアクセスせずにコンボボックスの内容を選択するたびに、対応する金額が表示されるようにしたいです。 PHPでコンボボックスを作成するときにvalueに商品コードと金額を区切り記号("_"など)で連結した値を設定しておき、 それを商品コードと金額に分解すれば実現できると思うのですが、もう少しスマートな方法があればと思い、質問させて頂きました。 環境はWindowsXP、PHP5、MYSQLです。 よろしくお願いします。

  • コンボボックスについて

    コンボボックスで値を入れておきそこからコンボがスタートできるようにしたいと思っています。 具体的には時間の数値をコンボボックスで用意します。 時間を取得するプログラムを入れ込み、画面が出た時点で現在の時間をコンボボックスの時間数値で選択されている格好にしたいのです。これはいつも同じ数字ではなく時間によって選択されているコンボボックスの数値が異なるという事になります。 どうかサンプルコードなどありましたら教えて下さい。 かなり苦戦しました。

  • Excelマクロのコンボボックスについて

    初めてマクロを扱います。 マクロに詳しい方、コードをご教授ください。 Excelマクロを使い下記の機能をシートに盛り込みたいと考えております。 【実現したいこと】 ・シート上にコンボボックスを作成し、コンボボックスで選択した項目で絞り込めるようにする。 ・コンボボックスに格納される項目は、A列の重複を除外し、昇順で並べ替えたもの。 ・またコンボボックスに格納する項目は日々レコード追加されるため、コンボボックスの中身にも随時反映するようにしたい。 ・コンボボックスには「全て表示」というアイテムを追加し、「全て表示」を選択すると、フィルターが解除される。 わかりにくいかもしれませんが上記のことを実現したいと考えております。 どうかお知恵をお貸しください!! よろしくお願いします!!

  • access クエリコンボボックスについて

    フォームのメニュー画面でレポート印刷ボタンを作りました。 印刷ボタンを押すと[抽出する都道府県は?] とパラメーター入力が表示されるようにしてあるのですが、 それを入力式ではなく、コンボボックスにして選択式にしたいのですが、 どのようにすれば良いのでしょうか? コンボボックスにマクロをつけて クエリの抽出条件のところに[forms]![フォーム名]![コンボ名] を入力しても、実行したときになにも抽出されません。 なにがどのように違っているのでしょうか? 説明が分かりにくくて申し訳ないのですが、 わかる方いらっしゃいましたらぜひ教えていただきたいです。 よろしくお願いいたします。

  • ダブルでコンボボックスについて

    1つ目のコンボボックスで都道府県を選択できるとします。2つ目のコンボボックスは1つ目で選択した県の市町村が選べるようにしたいんですが、JavaScriptではどのように記述すればよいのでしょうか? めちゃくちゃ人頼みで申し訳ないのですが、急いでいるので教えて下さい(-人-)

  • Access2000 コンボボックス内の並べ替え

    フォーム上で指定した条件で選択クエリを作り、クエリのデータを フォーム上のコンボボックスに表示するようにしました。 (選択クエリのフィールド:   「ID」、「名称」、「条件(指定の状況により数が変わる)」) 選択クエリを見ると「ID」が昇順で並んでいるのですが、 フォームのコンボボックスは「名称」が昇順で表示されます。 コンボボックス上でも「ID」が昇順になるようにするには どうすればよいのでしょうか? よろしくお願いします。