PHPをはじめて間もないのですが、質問します
DB(MySql)のテーブルを使用してリストボックスの
選択肢をさせるようにしたいのですが、
同じ1つのリストボックスで選択するようにします
テーブル
CodeNo 商品名 分類
0001 バナナ 果物
0002 みかん 果物
0003 ピーマン 野菜
0004 トマト 果物
0005 もも 果物
0006 にんじん 野菜
のようなデータがあるとします
(1)選択肢は分類のデータを表示します
果物
野菜
(2)(1)で選択された分類の商品名を選択肢にします
果物選択したとする
バナナ
みかん
トマト
もも
(3) (2)で選択されたCodeNo,商品名を表示する
トマトを選択したとする
0004 トマト
がテキストボックスに表示されるようにします。
以上のようなことをPHPですべてするにはどのようにすれば
よいのか、ご教授いただけませんでしょうか?
よろしくお願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんにちは。
レスポンスですが、大量のリクエストが同時に来た場合や、
複雑なSQLを発行しなければ問題ないと思います。
mySQLは単純なselect文なら結構早いです。
ただ、選択項目を変えるごとにサーバへアクセスすることになるのでトラフィックは増えます。
その場合、他の方も提案していますがJavaScriptで動的にコンボボックスの選択内容を変えるという方法もあります。
この場合は初回アクセス時にすべてのデータを取得し、ソース内に書き出し、JavaScriptによって制御します。
前者の場合も後者の場合も最終的に選択された情報を使用する時はDBに再アクセスし、データの整合性をチェックする必要がありますね。
No.3
- 回答日時:
JavaScriptを併用するなら、分類毎に商品データを配列に定義するJavaScriptをPHPで出力して、1つ目のリストボックスの選択に応じて二つ目のリストボックスの内容を書き換える事で実現できます。
JavaScriptのカテゴリは見ていませんが、こういう処理は多分JavaScriptのFAQのような気がします。過去の記事を検索してみたらどうでしょうか?っとその前に、クライアントサイドスクリプトとサーバーサイドスクリプトの違いは認識されてるでしょうか?まずは一度に全部考えずに画面遷移を普通のHTMLファイルで書いてみましょう。もしJavaScriptが必要なら、それも先に作ってしまいましょう。それからそのHTMLを利用してプログラムを書き足していく・・・。何事も段階を追っていかないと難しいですよ。ベテランでもそうなのですから。
ご丁寧にありがとうございました
頭の中では、こうなって、次にこうなるとと、
考えてはいるのですが、いざコーディングするようになったら、どこから手を付けていけばいいのかが、
迷うところです。
アドバイスありがとうございました
地道に、コツコツとやります。
No.2
- 回答日時:
こんばんは。
コンボボックスの選択内容を受け取り
セットする結果(SQL)を変えればいいと思います。
何もない(最初の表示)
の場合は分類カラム一覧を取得するSQLを発行し、
分類が選択され、渡された場合は
条件を分類にして商品名を取得するSQLを発行し
商品名が選択され、渡された場合は
商品名を条件にして、codNoと商品名をテキストボックスのvalueにセットしてあげれば表示されます。
同じコンボボックスを使用し、DBから動的にとってくる場合、
一回ごとページを読み込みなおすイメージになります。
(その都度値を受け取り、その値を使用して条件分岐させます。)
この回答への補足
早速のレスありがとうございます。
動的にDBからとってくること=
画面切り替えかなり時間がかかるようになるのでしょうか?(Dataの量にもよるとおもいますが)
No.1
- 回答日時:
無理に一つのリストボックスで、と考える必要はないと思いますよ。
一番単純な方法だけ提示しますが、その前に、分類のところをテキストで持つとスピード、データ容量の点で不利なので、分類マスタ(分類ID,分類名)と商品マスタ(商品ID,分類ID,商品名)とテーブルを別けた方が良いです。もちろんこれは一般論なので、別ける程の必要は無いという事であればそれでいいと思いますが。さて、まず1画面目で分類のリストボックスを表示します。mysqlの場合だと"select distinct 分類 from 商品テーブル"という感じでデータを抽出してこれでリストボックスを生成します。
そして2画面目で"select * from 商品テーブル where 分類='1画面目の入力'"というようなSQLでリストボックスを生成します。
これでいいのではないでしょうか。
なおこの分類→商品のセレクトを1画面で、つまり分類を選んだ時点で(サーバーにアクセスさせずに)商品のセレクトボックスの表示を変えるというような処理をするためにはJavaScriptが必要になります。特に難しい事ではありませんが、PHP自体にまだ明るくないようでしたら、とりあえずは2画面に別けて作った方が無難です。
この回答への補足
早速の回答ありがとうございます
補足ですが、
イメージとして画面では
codeNo , 商品名、 個数・・・が一行で
これが複数行(約10行)あるように持っていきたいのです。
もし、よろしければ、JavaScriptの部分ををレクチャー指定tだけませんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Excel(エクセル) Excelで質問です。 詳細(写真) ①黄色の部分を全てプルダウンを設定する。 ②リストはG列 ③リ 1 2023/06/16 21:54
- HTML・CSS HTMLのフォームについてお尋ねします 1 2022/12/03 21:47
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- JavaScript プルダウンから1個選んで、豆知識を出すプログラム。 2 2022/06/21 17:27
- 年賀状作成・はがき作成 エクセルで作った住所録をワードの差し込み印刷ではがきに印刷したい 3 2022/09/26 15:47
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- その他(趣味・アウトドア・車) コインの裏表で選択するってどうなんだろ?ネットでコインの裏表で決めても幸福度に大差は無いと書いてあり 1 2022/04/17 18:49
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
在庫数の取得
-
php sqlite count 列数取得
-
csvをDBへ読み込んだら、NULLが...
-
phpにて出欠登録管理を作成して...
-
forの中でforをループしてそれ...
-
Accessへ日付をINSERT
-
次の日
-
PhpMyAdmin
-
DBへ追加&更新 追加不能状態...
-
クエリObjectをforeachで回す時...
-
エクセルをMysqlに格納
-
実行時エラー3131 FROM 句の構...
-
データベースに存在するデータ...
-
phpのPEARのMDB2を使って出たエ...
-
<VB.NET>INSERT文でDBにデータ...
-
php テーブルが作成できない
-
JAVA SQLServerException 列名 ...
-
insert1つの処理でもトランザ...
-
mysql_fetch_objectのエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
トランザクション処理
-
MySQLでデータベースにデータin...
-
PHPシステムでSQLのUPDATEがあ...
-
変数にNULLを代入したい
-
phpにて出欠登録管理を作成して...
-
csvをDBへ読み込んだら、NULLが...
-
php sqlite count 列数取得
-
クエリObjectをforeachで回す時...
-
PHPでフォームからデータDBに書...
-
DB Error: no such field
-
日またぎの計算
-
OracleからAccessへのインポート
-
PHPでいいね機能を作りたいので...
-
PHP PDOを利用してカラムの削除...
-
PHPでPostgreSQLのテーブルを表...
-
SQLで返り値が空とでる
-
PHP prepare フィールド名をエ...
-
PHPでmySQLのテーブルを作成したい
-
外部結合で参照列が複数あるSQL
-
MDB2エラーが対応出来ません。
おすすめ情報