dポイントプレゼントキャンペーン実施中!

PHPをはじめて間もないのですが、質問します

DB(MySql)のテーブルを使用してリストボックスの
選択肢をさせるようにしたいのですが、
同じ1つのリストボックスで選択するようにします

テーブル
CodeNo 商品名   分類
0001  バナナ   果物
0002  みかん   果物
0003  ピーマン  野菜
0004  トマト   果物
0005  もも    果物
0006  にんじん  野菜

のようなデータがあるとします

(1)選択肢は分類のデータを表示します
   果物
   野菜

(2)(1)で選択された分類の商品名を選択肢にします
   果物選択したとする
   バナナ
   みかん
   トマト
   もも

(3) (2)で選択されたCodeNo,商品名を表示する
   トマトを選択したとする

0004  トマト
がテキストボックスに表示されるようにします。

以上のようなことをPHPですべてするにはどのようにすれば
よいのか、ご教授いただけませんでしょうか?
よろしくお願いいたします。
   

A 回答 (4件)

こんにちは。



レスポンスですが、大量のリクエストが同時に来た場合や、
複雑なSQLを発行しなければ問題ないと思います。
mySQLは単純なselect文なら結構早いです。
ただ、選択項目を変えるごとにサーバへアクセスすることになるのでトラフィックは増えます。

その場合、他の方も提案していますがJavaScriptで動的にコンボボックスの選択内容を変えるという方法もあります。
この場合は初回アクセス時にすべてのデータを取得し、ソース内に書き出し、JavaScriptによって制御します。

前者の場合も後者の場合も最終的に選択された情報を使用する時はDBに再アクセスし、データの整合性をチェックする必要がありますね。
    • good
    • 0

JavaScriptを併用するなら、分類毎に商品データを配列に定義するJavaScriptをPHPで出力して、1つ目のリストボックスの選択に応じて二つ目のリストボックスの内容を書き換える事で実現できます。

JavaScriptのカテゴリは見ていませんが、こういう処理は多分JavaScriptのFAQのような気がします。過去の記事を検索してみたらどうでしょうか?っとその前に、クライアントサイドスクリプトとサーバーサイドスクリプトの違いは認識されてるでしょうか?

まずは一度に全部考えずに画面遷移を普通のHTMLファイルで書いてみましょう。もしJavaScriptが必要なら、それも先に作ってしまいましょう。それからそのHTMLを利用してプログラムを書き足していく・・・。何事も段階を追っていかないと難しいですよ。ベテランでもそうなのですから。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました

頭の中では、こうなって、次にこうなるとと、
考えてはいるのですが、いざコーディングするようになったら、どこから手を付けていけばいいのかが、
迷うところです。
アドバイスありがとうございました
地道に、コツコツとやります。

お礼日時:2005/06/07 20:25

こんばんは。



コンボボックスの選択内容を受け取り
セットする結果(SQL)を変えればいいと思います。

何もない(最初の表示)
の場合は分類カラム一覧を取得するSQLを発行し、
分類が選択され、渡された場合は
条件を分類にして商品名を取得するSQLを発行し
商品名が選択され、渡された場合は
商品名を条件にして、codNoと商品名をテキストボックスのvalueにセットしてあげれば表示されます。

同じコンボボックスを使用し、DBから動的にとってくる場合、
一回ごとページを読み込みなおすイメージになります。
(その都度値を受け取り、その値を使用して条件分岐させます。)

この回答への補足

早速のレスありがとうございます。

動的にDBからとってくること=
画面切り替えかなり時間がかかるようになるのでしょうか?(Dataの量にもよるとおもいますが)

補足日時:2005/06/07 00:48
    • good
    • 0

無理に一つのリストボックスで、と考える必要はないと思いますよ。

一番単純な方法だけ提示しますが、その前に、分類のところをテキストで持つとスピード、データ容量の点で不利なので、分類マスタ(分類ID,分類名)と商品マスタ(商品ID,分類ID,商品名)とテーブルを別けた方が良いです。もちろんこれは一般論なので、別ける程の必要は無いという事であればそれでいいと思いますが。

さて、まず1画面目で分類のリストボックスを表示します。mysqlの場合だと"select distinct 分類 from 商品テーブル"という感じでデータを抽出してこれでリストボックスを生成します。

そして2画面目で"select * from 商品テーブル where 分類='1画面目の入力'"というようなSQLでリストボックスを生成します。

これでいいのではないでしょうか。

なおこの分類→商品のセレクトを1画面で、つまり分類を選んだ時点で(サーバーにアクセスさせずに)商品のセレクトボックスの表示を変えるというような処理をするためにはJavaScriptが必要になります。特に難しい事ではありませんが、PHP自体にまだ明るくないようでしたら、とりあえずは2画面に別けて作った方が無難です。

この回答への補足

早速の回答ありがとうございます
補足ですが、
イメージとして画面では
codeNo , 商品名、 個数・・・が一行で
これが複数行(約10行)あるように持っていきたいのです。
もし、よろしければ、JavaScriptの部分ををレクチャー指定tだけませんでしょうか?

補足日時:2005/06/07 00:42
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!