• ベストアンサー

DBに入力されている値のセレクトフォームを受け取りたいです

こんにちは。 たびたびすみません・・・・。 MySQLのテーブルの顧客名をセレクトメニューで 表示できて大喜びしていたのですが・・・。 【登録】→【確認】→【MySQLの該当テーブルに保存】 としたいのです。 テキストエリアで入力した項目は、【確認】画面で <?php echo htmlspecialchars($_POST["siire_no"]) ?> と入力すると、ちゃんと表示されるのですが・・・。 先日教えて頂いた、テーブルからセレクトメニューを作る コードを使わせて頂いて $res=mysql_query("select * from kokyaku"); while ( $rows=mysql_fetch_array($res) ) {   print "<option value=\"".$rows['kokyaku_id']."\">".$rows['kokyaku_name']."\n"; } と書いて、【確認】画面で <?php echo htmlspecialchars($_POST["kokyaku_id"]) ?> とすると、顧客テーブルで指定していた、顧客の番号が 表示されます。 これを、siireテーブルに保存するときの顧客情報 フィールドには、顧客番号で入れたいけれども、 【登録確認】画面では、番号ではなく、顧客名を 表示させたい場合は、どのように記述すれば よいのでしょうか・・・・。 ためしに、 <?php echo htmlspecialchars($_POST["kokyaku_name"]) ?> と書いてみたりしたのですが 【確認】画面で、顧客の欄だけ何も出なくなったり してしまいました。 どうかご指導よろしくお願いいたします。 使用環境:PHP5+MySQL4+Apache

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

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

こんにちは。   print "<option value=\"".$rows['kokyaku_id']."\">".$rows['kokyaku_name']."\n"; ここで生成されたHTMLを見てみるとわかると思いますが、 <select name="kokyaku"> <option value="0001">顧客1 <option value="0002">顧客2 <option value="0003">顧客3 </select> と生成されていると思います。 すると、実際送信されるのはvalueに設定されている 値が送信されます。 なので、顧客IDは取得できるけど顧客名は取得 出来ません。 >これを、siireテーブルに保存するときの顧客情報 >フィールドには、顧客番号で入れたいけれども、 >【登録確認】画面では、番号ではなく、顧客名を >表示させたい場合は、どのように記述すれば >よいのでしょうか・・・・。 この場合は受け取った顧客IDを使用してDBより 再取得します。 取得した顧客名を表示に使い、次の登録処理には 顧客IDをsubmitします。 またはJavaScriptでselectで選択された 顧客名を同時に送信することも可能ですがDBから 再取得を行った方が確実だと思います。

sibazuke
質問者

お礼

LancerVIIさま。 いつも、ご指導ありがとうございます。 とてもわかり易く説明して頂いたので、 なぜ出来なかったかと言う事と、どうしたら 表示されるようになるのかがキチンと わかりました。 PS 先日、PHPポケットリファレンスを購入しようと 近所の本屋さんに行ったのですが4しかなくって_| ̄|○ 今私はPHP5を使っているのですが、4の本でも 良いのでしょうか・・・?

その他の回答 (2)

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

こんにちは。 関数を調べるには4の本でも十分 役立つとは思いますが、どうしても 上位が強くなってしまいますので微妙に 違う部分が出てくるかもしれません。 5の本が出るのを待った方がいいかもしれませんが 雰囲気をつかむために4のを買ってみて いろいろ見てみるといいかもしれません。

sibazuke
質問者

お礼

なるほど。 5が出るまで、せめてよく使われる関数を 覚える為にも、4の本を購入いたします。 いつも、ご親切にありがとうございます。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

ソースがいまいちわからないのですが、 $sql = "select * from kokyaku where kokyaku_id = '" .$_POST['kokyaku_id']) ."'"; $res=mysql_query($sql); $rows=mysql_fetch_array($res); print $rows['kokyaku_name']."\n"; とすれば表示されると思います。 $_POST["kokyaku_name"] で表示させるには kokyaku_name をPOSTで渡してやらなければ表示しませんが、渡していますか?

sibazuke
質問者

お礼

moon_nightさま。 こんばんは。 ご指導、ありがとうございました。 教えて頂いたコードを記入すると Parse erroが出てしまって(泣) エラーが出るからと、すぐにこちらでお伺い するばかりでは成長しないかなと思いまして 一日悩んであれこれいじくってみたのです。 <? $sql = "(select * from kokyaku where kokyaku_id = '".$_POST["kokyaku_id"] ."')"; $res=mysql_query($sql); $rows=mysql_fetch_array($res); print $rows['kokyaku_name']."\n"; ?> にしたら、エラーが出なくなって望みどおりの 表示がでるようになりました♪ ありがとうございました。

関連するQ&A