• 締切済み

AjaxでDBと連携した動的リストボックスを作りたい

こんにちわ。 PHPの学習を始めたばかりなのですがリストボックスを使ったWEBで行き詰っています。 リストボックスは3つあり1つ目をSQL Server(ODBC接続)より値を表示して1つ目の値によって条件を絞った値を表示するこれもSQL Server(ODBC接続)です。3つめも同様の仕組みです。 数日間調べていたのですがSQL Serverを使用した例がありませんでした。 ご存知のサンプルがございましたら教えて下さい。 submitでのリストボックス連携はできるのですが画面のちらつきを改修して欲しいとのことからAjaxに辿り着きました。 皆様のお力をお貸し頂き解決までお付き合い頂ければ幸いです。 どうぞよろしくお願い致します。

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5115/13356)
回答No.3

まずsubmitを使わずにリストボックスの中身を書き換えるのはJavaScriptを使って実現します。 簡単なサンプルを用意しました。 http://takachan.jra.net/sample/0001.html ソースをご覧頂いてリストボックスの中身を書き換える方法をご理解いただければと思います。 リストボックスの中身を書き換える方法が分かれば、あとはAjaxを使ってサーバと連動するだけです。 サンプルではスクリプト内に選択肢のデータがベタ書きしてありますが、そこをAjaxを使ってサーバからもらったデータで書き換えるように変更するだけです。

earlgyreprince
質問者

お礼

度々、申し訳ございません。 リストボックスで質問させて頂いたのですがt_ohtaさまのサンプルを拝見して気がつきました。 リストボックスではなくてコンボボックス(プルダウン)の間違いです。 よろしくお願いいたします。

earlgyreprince
質問者

補足

t_ohtaさま お手数をおかけ致します。 なるほど。内容を更新するのはJavaScriptだったんですね。 一つ解決致しました。 ありがとうございます。 中身を書き換える仕組みは理解することができました。 >そこをAjaxを使ってサーバからもらったデータで書き換えるように変更するだけです。 XMLか何かでSQL Serverのデータを取得してサンプルにて頂戴致しましたJavaScriptの処理分岐部分に返すと言ったイメージなのでしょうか? JavaScriptとデータの連携が理解できずにいます。 見当違いであったら申し訳ございません。 よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • t_ohta
  • ベストアンサー率38% (5115/13356)
回答No.2

サンプルを見る限り両方コーディングが必要ですね。 JSONデータと言っているのはデータの記述方法(持ち方)です。 http://ja.wikipedia.org/wiki/JavaScript_Object_Notation ブラウザ側ではAjaxでサーバに対してリクエストを送ります。(プルダウンを開いた時に他の項目のデータを条件にリストに表示するリストのデータをリクエスト) サーバサイドでPHPプログラムを動かし、リクエストされた条件を基にSQL Serverからデータを取得してJSONの形式でクライアントに返します。 ブラウザ側では受け取ったJSON形式のデータからリストボックスの中身を生成するという動きになっています。 サンプルはExt JSライブラリを使ってフォームを表示したりリストボックスの中身を書き換えているので、まずはこのライブラリの使い方を覚える方が先かもしれませんね。 残念ながら私はExt JSライブラリを使ったことがないので、このライブラリについてはお力になれません。

earlgyreprince
質問者

お礼

頂いたサンプルを元にもう少し自分で考えながらやってみようと思います。 どうもありがとうございました。

earlgyreprince
質問者

補足

t_ohtaさま ありがとうございます。 なるほど・・・ Ext JSライブラリを覚える必要性があるのですね。 調べてみますとsubmitを使わない連動リストボックスはAjaxという点に辿りつきました。 しかし、Ajaxと一重に言ってもサンプルによって色々やり方が違っているようでした。 下記参考URLではなくてもt_ohtaさまのご存知の方法をご教示頂けますでしょうか? JSONデータを持たずしても実装できる方法はありますでしょうか? お手数ですがよろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • t_ohta
  • ベストアンサー率38% (5115/13356)
回答No.1

知りたいのはPHPで作るサーバサイドのプログラムのことですか。 それともJavaScriptで作るクライアントサイドのプログラムのことですか。 具体的にどの辺りで躓いているんでしょうか。

earlgyreprince
質問者

補足

t_ohtaさま どうもありがとうございます。 説明不足で大変申し訳ございません。 作成は下記URLのイメージになります。 http://ajax-world.sakura.ne.jp/extjs/combobox/04/ クライアントサイドになるのでしょうか。 JSONデータをサーバサイドのPHPから取得することで機能を実現しています。と記載されているのですがJSONデータをSQL Serverにて作成する事は可能なのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • リストボックスの値の再表示

    こんにちは! リストボックスを選択した後に、submitボタンを押して同一 ページに飛んだ際に、選択したリストボックスの値を表示させたい (一番上の値に戻ってしまいます。) のですがどのようにすれば可能でしょうか? ちなみにリストボックスはAccessをADO接続しています。

  • リストボックスで複数選択した値でDBから抽出したい

    よろしくお願いします。 開発環境はVisualBasic2005、SQL Server2005Expressです。 既に同様の質問があるかもしれませんが見つけ出せなかったので質問させていただきます。 リストボックスに表示されたデータを複数選択し、その値をWHERE条件としてデータベースから該当データを抽出したいのですが、複数選択となると条件の数が可変となるため、どのような方法で抽出するのが一番良いのかわかりません。 情報をお持ちの方、何卒お願いします。

  • 「SubmitせずにAjaxからCGIを呼び出して結果をHTML上に表

    「SubmitせずにAjaxからCGIを呼び出して結果をHTML上に表示したい」 HTMLファイル上にテキストボックスとそれと対になるラベル(ラベルじゃなくても良いのですが。。)のセットがいくつかあります。 テキストボックスにコードを入力したら、ラベルにそのコードに対応する商品名を表示したいと思っています。 テキストボックスにコードを入力後、フォーカスが離れたら(Onchangeで)Ajaxでそのコードの値を取得し、そのデータをCGIに渡してサーバにあるDBに接続し、その結果をHTML上のラベルに表示したいと思います。 Sbmitせずにフォーカスが離れた場合に、データをCGIに受け渡し、そのデータを画面遷移しないで、HTML上に表示するのはどのようにすればいいのでしょうか。 Ajaxを使えばいいと教わったのですが、色んなサイトを調べてみたのですが、Ajaxが初心者で、よくわからず、コードなどございましたら教えて頂けましたら嬉しいです。 よろしくお願い致します。

    • ベストアンサー
    • AJAX
  • Ajaxについて

    http://jsgt.org/ajax/newmon/samples/chapter05/05-09-02/sample.htmを参考にしてAjaxを勉強しているものです。 動物園リストをクリックしても動物園の名前が表示されません。 なぜだか教えてくださいお願いします。

  • Ajaxでページングしたいのですが・・・

    Ajaxでページングしたいのですが・・・ phpとmysqlでページングを行っています。詳しくは下記の通りです。 データの総数は全部で35件あります。 1ページ目(hoge.com/list/?id=1)で 1件目~18件目を表示します。 2ページ目(hoge.com/list/?id=2)で 19件目~35件目を表示します。 1ページ目には『次のページ』と書いた画像を表示させ2ページ目へリンクを張り 2ページ目には『前のページ』と書いた画像を表示させ1ページ目へリンクを張っています。 ページングの動作としては問題ないのですがこのページングをAjaxと連携させるには どうすればいいのでしょうか? できるだけurlにパラメータは付けずにhoge.com/list/としクリックしたリンクにより値を送りそれぞれのページングデータを表示させたく思っております。 検索してみたのですが前もってそれぞれ静的ページを作っておきそれを読み込ませるという方法はあったのですがあくまでも動的に行いたいです。 行い事のサンプルページの紹介でも構いませんので実現できる方法を教えてください。

  • リストボックスの値の取得

    こんにちは! 簡単な質問でしたらお許し下さい。 VBScriptのリストボックスで指定した値をFormのsubmitボタンをクリック しないで取得したいのですが可能ですか?

  • コンボボックスやリストボックスの値設定

    コンボボックスやリストボックスに データベースの値で設定するときについて疑問があります。 現システムでは JSP内でsqlタグを使ってレコードセットを取得し <core:forEach>でぐるぐるまわして値をセットしています。 ↓こんな感じです。 ----------------------------------------------------------- <sql:setDataSource var="db" dataSource="jdbc/xxxxx" /> <sql:query var="rs" dataSource="${db}" > SELECT * FROM XXXXX </sql:query> <select name="xxxxx"> <c:forEach var="row" items="${rs.rows}" > <option value="${row['xxxxx']}" <c:if test="${row['xxxxx'] == requestScope.xxxxx}" > selected </c:if> >${fn:escapeXml(row['xxxxx'])}</option> </c:forEach> </select> ----------------------------------------------------------- これでもちゃんと動いてるのですがMVCを考えるとJSP内でDB接続って疑問に感じます。 Sevletでコンボボックスに必要な値を取得しておいてリクエスト属性にセットし JSP内では変数をぐるぐる回すことも考えたのですが、 コンボボックスやリストボックスの数が増えたり面倒に思います。 コンボボックスやリストボックスに値を設定する場合は どういう方法がよいのでしょうか?

    • ベストアンサー
    • Java
  • リストボックス全選択について

    JavaScriptについて質問です。 リストボックスA,B と プルダウンC という画面項目があると仮定し、 submitボタンを押下したとき、 リストボックスA,Bの項目全てが全選択され、プルダウン項目はそのままにしたいと考えております。 下記のソースのように作成したのですが、 リストボックスが全選択されるところまでは良いのですが、 プルダウン項目が最後の項目が選択された状態になってしまいます。 リストボックスだけが全選択され、プルダウン項目はそのままにするにはどうしたら良いでしょうか。 かなり困ってます。 どなたか助けてください。。 以下ソースです。 <html> <head> <script language="JavaScript"> <!-- function selectAll(){  var str = document.getElementsByTagName("option"); for(i=0;i<str.length;i++){ str[i].selected = true; } } //--> </script> </head> <body> <table> <tr> <td> リストA<br> <select name="listboxA" multiple> <option value="サンプル1">サンプル1</option> <option value="サンプル2">サンプル2</option> <option value="サンプル3">サンプル3</option> </select> </td> <td> リストB<br> <select name="listboxB" multiple> <option value="サンプル4">サンプル4</option> <option value="サンプル5">サンプル5</option> <option value="サンプル6">サンプル6</option> </select> </td> <td> プルダウンC<br> <select name="Pdown"> <option value="サンプル7">サンプル7</option> <option value="サンプル8">サンプル8</option> <option value="サンプル9">サンプル9</option> </select> </td> </tr> </table> <br> <input type=submit value="送信" onClick="selectAll()"> </body> </html>

  • とあるAJAXでの値の受け取り方について

    PHPはわかりますが、JSはまったくの初心者です。 こちらのサンプルでAJAXの練習中です。 http://www.imztry.net/dhtml/027/027-2.html 動作はするんですが、その値をどうすればフォームとして($_POST)で 受け取ることができるのか、お力をお借りしたいと思います。 「save」ボタンを押すと、下のほうにメッセージが流れます。 box3|node17; box3|node18; の値をPOSTデータで送りたいんですが、どうもうまくいきません。

  • AJAX→PHP -DB(MySQL)- PHP→AJAXのフローについて

    Yahoo! User Interface の DataTable Control を使った編集可能なリスト作成を考えています。 しかし、Ajaxでの入力値のPHPへの投げ方、また、DBから受け取った値をAjax(DataTable Control)で表示させる方法とも、やり方が全くわかりません…。 (Jasonという形式に成型して出力させる??) YUIを使用して外部テキストファイルを表示してみたりアニメーションを動かしてみたり、Ajax初心者なりに1ヶ月ぐらい試みてみましたが、DataTable Controlについては今のところ全く成果なしで困り果てています…。 どなたか勘所のある方、ご教示頂けませんでしょうか? 宜しくお願いします。 http://developer.yahoo.com/yui/examples/datatable/dt_cellediting.html

WRC-XE5400G-Gの6GHz接続について
このQ&Aのポイント
  • WRC-XE5400G-Gを購入して、6GHzでの接続ができない問題が発生しています。
  • バンドステアリング有効を外して、2.4GHz、5GHz、6GHzにそれぞれ名前をつけて設定しましたが、6GHzが表示されません。
  • 6GHzのランプはオレンジで点灯しており、5GHzは白ランプです。
回答を見る