• 締切済み

リストボックスについて

PHPをはじめて間もないのですが、質問します DB(MySql)のテーブルを使用してリストボックスの 選択肢をさせるようにしたいのですが、 同じ1つのリストボックスで選択するようにします テーブル CodeNo 商品名   分類 0001  バナナ   果物 0002  みかん   果物 0003  ピーマン  野菜 0004  トマト   果物 0005  もも    果物 0006  にんじん  野菜 のようなデータがあるとします (1)選択肢は分類のデータを表示します    果物    野菜 (2)(1)で選択された分類の商品名を選択肢にします    果物選択したとする    バナナ    みかん    トマト    もも (3) (2)で選択されたCodeNo,商品名を表示する    トマトを選択したとする 0004  トマト がテキストボックスに表示されるようにします。 以上のようなことをPHPですべてするにはどのようにすれば よいのか、ご教授いただけませんでしょうか? よろしくお願いいたします。    

  • PHP
  • 回答数4
  • ありがとう数3

みんなの回答

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.4

こんにちは。 レスポンスですが、大量のリクエストが同時に来た場合や、 複雑なSQLを発行しなければ問題ないと思います。 mySQLは単純なselect文なら結構早いです。 ただ、選択項目を変えるごとにサーバへアクセスすることになるのでトラフィックは増えます。 その場合、他の方も提案していますがJavaScriptで動的にコンボボックスの選択内容を変えるという方法もあります。 この場合は初回アクセス時にすべてのデータを取得し、ソース内に書き出し、JavaScriptによって制御します。 前者の場合も後者の場合も最終的に選択された情報を使用する時はDBに再アクセスし、データの整合性をチェックする必要がありますね。

回答No.3

JavaScriptを併用するなら、分類毎に商品データを配列に定義するJavaScriptをPHPで出力して、1つ目のリストボックスの選択に応じて二つ目のリストボックスの内容を書き換える事で実現できます。JavaScriptのカテゴリは見ていませんが、こういう処理は多分JavaScriptのFAQのような気がします。過去の記事を検索してみたらどうでしょうか?っとその前に、クライアントサイドスクリプトとサーバーサイドスクリプトの違いは認識されてるでしょうか? まずは一度に全部考えずに画面遷移を普通のHTMLファイルで書いてみましょう。もしJavaScriptが必要なら、それも先に作ってしまいましょう。それからそのHTMLを利用してプログラムを書き足していく・・・。何事も段階を追っていかないと難しいですよ。ベテランでもそうなのですから。

yokkyan0123
質問者

お礼

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

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんばんは。 コンボボックスの選択内容を受け取り セットする結果(SQL)を変えればいいと思います。 何もない(最初の表示) の場合は分類カラム一覧を取得するSQLを発行し、 分類が選択され、渡された場合は 条件を分類にして商品名を取得するSQLを発行し 商品名が選択され、渡された場合は 商品名を条件にして、codNoと商品名をテキストボックスのvalueにセットしてあげれば表示されます。 同じコンボボックスを使用し、DBから動的にとってくる場合、 一回ごとページを読み込みなおすイメージになります。 (その都度値を受け取り、その値を使用して条件分岐させます。)

yokkyan0123
質問者

補足

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

回答No.1

無理に一つのリストボックスで、と考える必要はないと思いますよ。一番単純な方法だけ提示しますが、その前に、分類のところをテキストで持つとスピード、データ容量の点で不利なので、分類マスタ(分類ID,分類名)と商品マスタ(商品ID,分類ID,商品名)とテーブルを別けた方が良いです。もちろんこれは一般論なので、別ける程の必要は無いという事であればそれでいいと思いますが。 さて、まず1画面目で分類のリストボックスを表示します。mysqlの場合だと"select distinct 分類 from 商品テーブル"という感じでデータを抽出してこれでリストボックスを生成します。 そして2画面目で"select * from 商品テーブル where 分類='1画面目の入力'"というようなSQLでリストボックスを生成します。 これでいいのではないでしょうか。 なおこの分類→商品のセレクトを1画面で、つまり分類を選んだ時点で(サーバーにアクセスさせずに)商品のセレクトボックスの表示を変えるというような処理をするためにはJavaScriptが必要になります。特に難しい事ではありませんが、PHP自体にまだ明るくないようでしたら、とりあえずは2画面に別けて作った方が無難です。

yokkyan0123
質問者

補足

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

関連するQ&A

  • リストボックスの表示内容について

    よろしくお願いします。 PHP+MySQL環境で作成しています。 初歩的な質問で恐縮ですが、テーブルの内容をリストボックスの選択項目として使うにはどうすればよろしいのでしょうか? 例 テーブル「果物」 ID name 1 りんご 2 なし 3 もも ・ ・ ・ ・ リストボックス りんご なし もも とテーブル内容をもって表示させたいのです。 色々検索したのですが、これだというのがなかなか見つからずでした。 phpだけの記述では無理なのでしょうか?javascriptとかを利用するのでしょうか? 私の予想としては、参照したいテーブルを selectを使って問合せし、その内容を変数へ入れ込んでいく感じなのかな??と思っているのですが、予想しても どう記述したらよいのか??? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 別シートのフィールドから同一値検索、隣フィールド値取得の関数を教えてください。

    ■シート1 ---------------- □分類□名 称□ ---------------- |果物|りんご| ---------------- |果物|バナナ| ---------------- |果物|みかん| ---------------- |野菜|トマト| ---------------- |野菜|セロリ| ---------------- |野菜|レタス| ---------------- ■シート2 ---------------- □名 称□分類□ ---------------- |りんご|  | ---------------- |トマト|  | ---------------- |バナナ|  | ---------------- |セロリ|  | ---------------- |みかん|  | ---------------- |レタス|  | ---------------- シート2の名称にてシート1の名称を検索して、シート2に分類を取得することは可能でしょうか。 よろしくお願いします。

  • アクセス コンボボックスのリストの条件を指定する

    コンボボックスで表示されるリストを条件に応じて色々に変更できますか? テーブル1 ID 種類   品名 1 やさい  白菜 2 やさい  にんじん 3 くだもの りんご 4 くだもの みかん フォーム1 種類 やさい 品名 ___ コンボボックスリスト        白菜        にんじん 現在は、コンボボックスのリスト(値集合ソース)を テーブル1に指定しておりますので、4個全部表示されてしまいますが、 これを、上で入力した「やさい」を参考にして 「やさい」に該当する「白菜」と「にんじん」しか表示されないようにしたいのです。 よろしくお願いいたします。

  • リストボックスの使い方が解りません。

    リストボックスの使い方が解りません。 商品台帳作成の為、ユーザーフォーム(登録画面)にて 商品番号、商品名、商品名(カナ)、商品分類、仕入値、売値を入力し、 登録ボタンで他のExcelを起動→転記→保存→閉じるという作業を しようとしたのですが、商品分類の所をリストボックスにしたいと 考えましたが、リストボックスの使い方が良く解りません。 商品分類の部分来たら、登録画面上で A 野菜 B 鮮魚 C 精肉 D 乾物 というのが出て、アルファベットを選択したいと思っております。 10種類程度で、それ以上に増える事は無いのですが 別シートで商品分類台帳のようなものが必要なのでしょうか? 初心者丸出しの質問ですが、宜しく御教授下さい。

  • ドロップダウンリストを二つ作る

         A     B 1  果物    りんご 2  野菜   トマト という表があったとします。 A に リストで果物か野菜を選択できるような式を入れ 果物を選択すると、Bはりんごかみかんを選択できるような式を入れたいです。 正し、上記の表は、シート1 選択するためのリストの一覧はシート2に表示させるものとします。 いろいろ調べましたがどうやってもできませんでした。 やり方教えてください。 エクセル2010使用です。

  • 入力規則のリストボックス

    エクセルの入力規則でリストボックスを使って選択したいのですが その時に、数字のみを抽出する方法はないですか? 例えば 1:りんご 2:みかん 3:バナナ をリストから選択する時、番号のみが表示されるように したいのです。 リストにはその番号がどれに該当するかわかるように りんご、みかん、バナナという内容も表示させたいのです。 よろしくお願いします。

  • エクセルで2段階コンボボックスを作成

    エクセルのシート上にコンボボックスを2つ作成して Aのコンボボックスの内容を選択するとBのコンボボックスの値が変わるというものを作成したいです。 エクセルのプルダウンで最初は考えていましたが、プルダウンだと三角の矢印が常に表示されない為あきらめました。 なのでコンボボックスの作成の仕方を教えて下さい。 例として野菜とくだものをあげます コンボボックスAで選択するもの→ 野菜、くだもの コンボボックスBで選択するもの→  【野菜の場合】キャベツ、にんじん、トマト 【くだものの場合」バナナ、りんご、みかん 以上です。よろしくお願いいたします。

  • ドロップダウンリストからフィールドの選択

    アクセスを使用してデータベースを作っています。 一例としてですが、テーブル内のフィールドに種類、品名があり、各々についてルックアップウィザードを使用して、種類のフィールドからは、野菜、果物、惣菜・・・などをドロップダウンリストに、品名のフィールドからは、キャベツ、白菜、人参、桃、みかん、バナナ、肉じゃが、カレー、ハンバーグ・・・などをドロップダウンリストに表示できるようになっています。 ところが、品名のドロップダウンリストがあまりに長くなってしまうため、品名の参照元のテーブルにフィールドを3種類(例:品名1野菜・品名2果物・品名3惣菜)作成し、種類のレコード゛の値によって、参照元のテーブルのフィールドを選択しドロップダウンリストの表示が切り替わる(例えば種類のドロップダウンリストに果物を選択すると品名のドロップダウンリストには、桃・みかん・バナナのみが表示される。)ようにしたいのですが、可能でしょうか?

  • リストボックスについて

    VBA初心者です。 VBAで以下の処理に大変困っております。 <処理内容> 1.リストボックスにある値を選択して、OKボタンを押す。 2.「1.」で選択した値をセルA1に出力。 3.「1.」で選択する値が複数ある場合は、セルA1の値は コンマをつけて出力。 <例1> ----------------------- <リストボックス1> みかん りんご トマト aaa01 ----------------------- ・選択が一つの場合 「みかん」を選択して場合、OKボタンを押す。 セルA1への出力内容 みかん ・選択が複数の場合 「みかん」、「トマト」、「aaa01」を選択して、OKボタンを押す。 セルA1への出力内容 みかん、トマト、aaa01 ※ユーザフォームの処理です。 まったくわかりません。 明日中に仕上げなければいけないため大変困っております。 どなたか御教授をお願い致します。 宜しくお願い致します。

  • VBA リストボックスについて

    VBA初心者です。どうぞよろしくお願いします。 ユーザーフォームにタブつきのリストボックスを作りたいと思っています。 リストはsheet1の中にあります。   A    B    C    D・・・ 1  NO  品名  売場 2  1  いちご  果物 3  2  みかん  果物 4  3  もも    果物 5  4  ハクサイ 野菜 6  5  キャベツ  野菜 7  6  きゅうり  野菜 8  7 9 果物のタブには、果物の品名が表示される。 1 いちご 2 みかん 3 もも 野菜のタブには、野菜の品名が表示される。 4 ハクサイ 5 キャベツ 6 きゅうり 青果のタブには、果物、野菜が表示される。 1 いちご 2 みかん 3 もも 4 ハクサイ 5 キャベツ 6 きゅうり 本を見ながら格闘しておりますが、きっと的違いで滅茶苦茶なことをしているのだと思います。 どうにも出来ず困っております。どなたか教えていただけないでしょうか。よろしくお願いします。 Private Sub UserForm_Initialize() Dim LastRow As Long Dim i As Integer Dim ListBoxNo As Integer Dim ListBox As Control Dim Listtabu(3) As Long 'タブの数 For i = 1 To 3 Listtabu(i) = 0 Next i Worksheets("sheet1").Activate With Worksheets("sheet1") LastRow = .Range("A65536").End(xlUp).Row For i = 2 To LastRow If Worksheets("sheet1").Range(Cells(i, 3)) = "果物" Then ListBoxNo = 1 Set ListBox = 果物 果物.List = Worksheets("sheet1").Range(Cells(i, 1), Cells(i, 2)).Value End If If Worksheets("sheet1").Range(Cells(i, 3)) = "野菜" Then ListBoxNo = 2 Set ListBox = 野菜 野菜.List = Worksheets("sheet1").Range(Cells(i, 1), Cells(i, 2)).Value End If If Worksheets("sheet1").Range(Cells(i, 3)) = "果物" & "野菜" Then ListBoxNo = 3 Set ListBox = 青果 青果.List = Worksheets("sheet1").Range(Cells(i, 1), Cells(i, 2)).Value End If ListBox.AddItem ListBox.List(Listtabu(LstBxNo), 0) = Worksheets("sheet1").Cells(i, 1).Value ListBox.List(Listtabu(LstBxNo), 1) = Worksheets("sheet1").Cells(i, 2).Value Listtabu(LstBxNo) = Listtabu(LstBxNo) + 1 Next End With End Sub

専門家に質問してみよう