• ベストアンサー

DBに入力されている値で、セレクトフォームを作りたいです。

こんばんは。 PHP5+MySQL4+Apacheを使って参考書を片手に顧客管理を 作りながら勉強をしています。 データーベースに、商品・仕入先・売り上げなどの テーブルを作り、PHPから、それぞれのテーブルの 一覧表示・新規入力画面&確認画面を作れた所まで きたのですが・・・・。 ふと、新規商品の入力画面で、仕入先をプルダウンメニューで 選べると便利だな、と思い、方法を探してみたのですが 見つかるのは、仕入先が個定数の場合のみの プルダウン表示方法しか見つからなくて。 顧客はどんどん増えると想定した場合、一件増える度に プルダウンメニューに、<option>顧客名</option>を 追加するのは嫌だなぁと思い、顧客が増えたら 自動的にプルダウンも増える、という事をしたいのです。 こういう希望は、不可能なのでしょうか・・・? どうか、ご指導よろしくお願いいたします。

質問者が選んだベストアンサー

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

こんにちは。 #3のスクリプトでいけませんか? pg_queryはPostgreSQLで使用する関数です。 mysqlにクエリーを投げるには mysql_queryを使用します。 mySQLを使用しているということなので変更して 回答してみたのですが、飛ばされると悲しいですね。

sibazuke
質問者

お礼

Lancer(5)(2)さま。 すみません!!全部kusukusuさんからの お返事だとなぜか勘違いをしてしまいました。 飛ばしたつもりは全然なかったのです。 ご指導頂いたのに、不愉快な思いをさせてしまって 本当に、申し訳なかったです。 すみません。 Lancer(5)(2)さまのご指導どおりコードを直したら エラーが解除されました。 ありがとうございます。 エラーは出なくなったのですが、プルダウンで 表示されず、テーブルの中の情報が横並びで 出てきてしまいました。 何か足りないのでしょうか・・・・。

その他の回答 (6)

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

こんにちは。 動作したようなのでよかったです。 私は下のサイトまたは本を利用してます。 あとはこれかなー?と使ってることですね。 どんなことしても最悪サーバが止まる程度だと 思うので試してみるのもいいかと思います。 (ファイルの削除等は注意してください。 必要なファイル消しちゃうと大変です) PHPポケットリファレンス http://www.amazon.co.jp/exec/obidos/ASIN/4774116688/250-3657652-6327438 PHPマニュアル http://fol.axisz.jp/php/man/php/ ご参考下さい。

sibazuke
質問者

お礼

LancerVIIさま。 ご親切に、ありがとうございました。

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

こんにちは。 いえいえ、こちらこそすいません。 お気になさらないで下さい。 本題に入ります。 <select name="tbselect"> <?php // DBより取得して表示 // ?> </select> 多分、selectタグの宣言が抜けていませんか? selectタグで囲んであげれば、思い通りの動きに なってると思います。

sibazuke
質問者

お礼

LancerVIIさま!! きました!表示されました!! すごいです。 多謝です。ありがとうございます。 大変失礼な事をしてしまったのに、ご親切で 丁寧なご指導を賜りまして、ほんとうに ありがとうございました。

sibazuke
質問者

補足

あっ。 えと、もし失礼でなければ、お伺いしても よろしいでしょうか・・・? 今回私が投稿しましたような、○○がしたい のだけど・・・関数を使うにも、その 関数で何が出来るのかもわからないし、関数自体が わからない、という初心者が手元において置くと 参考になるような書籍を、ご存知ないでしょうか?

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.4

(^^;すいません。MySQLだったんですね(^^; 勝手にPostgreSQLで書いてしまいました。 No3さんのやり方でいいと思いますよ~ (ってやってる事は同じですが)

sibazuke
質問者

お礼

kusukusuさま。 ご指導ありがとうございます。 エラーメッセージは Fatal error: Call to undefined function: pg_query() と、出てきました。 どうかよろしくお願いいたします。

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

こんにちは。 どんなエラーが表示されているか提示していただくと回答を得られやすいと思います。 mySQLを使っているということなので $res=mysql_query("select * from kokyaku"); while ( $rows=mysql_fetch_array($res) ) {   print "<option value=\"".$rows['kokyaku_id']."\">".$rows['kokyaku_name']."\n"; } これで実行できませんか?

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

$res=pg_query("select * from DB"); for($i=0;$i<pg_num_rows($res);++$i) {   print "<option value=\"".pg_fetch_result($res,"valueに値するもの")."\">".pg_fetch_result($res,"顧客名")."\n"; } でOKじゃないですか?

sibazuke
質問者

お礼

kusukusuさま。 ご指導ありがとうございます。 PHPのフォーム内に、教えて頂いたコードを 記入したのですが、printの行にエラーがあると 返ってきてしまいました。 記述したのは教えて頂いたコードに 作成したテーブル名などを変更したのみで <? $res=pg_query("select * from kokyaku"); for($i=0;$i<pg_num_rows($res);++$i) {   print "<option value=\"".pg_fetch_result($res,"kokyaku_id")."\">".pg_fetch_result($res,"kokyaku_name")."\n"; } ?> と、書きました。 申し訳ないのですが、ご指導願えませんでしょうか・・・。

  • TNY
  • ベストアンサー率42% (69/163)
回答No.1

別途、プルダウンメニュー用に仕入れ先のリストを「select distinct 仕入れ先 from DB」で取ってくればOKではないでしょうか。 (distinctで重複を除けます) あとはそのリストの分、<option>で表示すればよいと思います。 質問をきちんと理解できてなかったらすみません。

参考URL:
http://www.pursue.ne.jp/SQLDoc/select08.htm
sibazuke
質問者

お礼

TNYさま。 ご指導、ありがとうございます。 教えて頂いた方法ですと、仕入先が増えた場合、 <option>を付け足さないといけないのですよね? やりたい事は、<form>内で、リストをDBのテーブルから 自動的にひっぱってくる方法なのです・・・・。 うまくお伝えできていなかったらすみません。