- ベストアンサー
ASP+SQLでWeb開発初心者が商品一覧画面から選択された商品名を取得する方法
- ASP+SQLでWeb開発を始めたばかりの初心者が、商品一覧画面から選択された商品名を取得する方法について教えてください。
- 商品一覧画面のラジオボタンから選択された商品名を取得するために、ASPのコードをループさせる方法を教えてください。
- 商品数が複数ある場合、ラジオボタンがTrueになった値を取得する方法について教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>>商品名を取得できるようになっていますか? >はobj_r("型番")が表示出来ていればいいのでしょうか? HTMLソースを確認してみて、 ------------------------------------ <INPUT type='radio' name='sel' Value='型番 OnClick='setSelect(this.value)'>品コード&型番 ------------------------------------ になっていれば宜しいかと思います。 ※型番の値を受け取りたいということが前提条件ですが。 >また、ラジオボタンをクリックするとスクリプトエラーがonClick='setSelect(this.value)'のところで >「オブジェクトがありません」とでています。 >今回のソースを入れる前からですが・・・ >分かりますでしょうか? これに関しては答えてもいいのですが、、、 下記URLを参照してください。 (調べることも大事です。学生時代に「辞書をひくのが早い人は勉強が出来る人」といわれたように、「辞書」→「google」に変わっただけで後は何も変わりません。 調べるだけ調べて、それでもわからなければ、またいつでも聞いてください。悪しからず了承ください。)
その他の回答 (3)
- anotu_kage
- ベストアンサー率27% (17/62)
>itemの配列ですが約4000レコードあるのですがきちんと >for i=0 to 4000のように設定するのでしょうか? >実際には下記のように書いています。for nextを上手く使えるでしょうか? 自分が書いたものはあくまで一例ですので、for nextを使用しなければいけないというわけではありません。 ><table border=1> ><tr><th>選択</th><th>品コード</th><th>商品名</th></tr> ><% >Do Until(obj_r.EOF) >Response.Write("<tr><td><INPUT type='radio' name='sel' Value='" & item & "'' onClick='setSelect(this.value)'>></td>") >Response.Write("<td>" & obj_r("品コード") & "</td>") >Response.Write("<td>" & obj_r("型番") & "</td></tr>") >obj_r.MoveNext >Loop >%> obj_r("品コード")等を取得しているobj_rにセットしているsqlクエリには商品名を取得できるようになっていますか? 書いていただいたソースの下に以下のような記述を加えてエラーにならなければ取得できているはずです。 例: ----------------------- 略 ------------------- Response.Write("<td>" & obj_r("品コード") & "</td>") %><td><%=obj_r("商品名") %></td><% Response.Write("<td>" & obj_r("型番") & "</td></tr>") ----------------------- 略 ------------------ ※response.write(aaa) と <%=aaa %> は同じ意味です。 を付け加えてエラーにならなければ(表示できれば)取得できているはずです。 ※表示できた場合 -------------------------------------------- <table border=1> <tr><th>選択</th><th>品コード</th><th>商品名</th></tr> <% Do Until(obj_r.EOF) Response.Write("<tr><td><INPUT type='radio' name='sel' Value='" & obj_r("商品名") & "'' onClick='setSelect(this.value)'>></td>") Response.Write("<td>" & obj_r("品コード") & "</td>") Response.Write("<td>" & obj_r("型番") & "</td></tr>") obj_r.MoveNext Loop %> ------------------------------------------ と記述すればラジオボタンで選択された値が"sel"内に(商品名が)格納されると思います。(取得方法は最初のものでOK) ※表示できない or エラー 恐らく"品コード"と"型番"を取得するテーブル内に商品名がないか、obj_rのsqlクエリで"商品名"を取得するような記述がされていないことが原因だと思われますのでsql文に"商品名"を取得するようなsql文に変えてください。 "商品名"が別のテーブルにあり、複数のテーブルから検索する場合は"SELECT","SQLServer","結合","JOIN"とかでgoogleで検索してみてください。
お礼
anotu_kageさんご回答ありがとうございます。 ひとつ誤らなければいけないことがあります。 このプログラムで「商品名」と言っているのがobj_r("型番") なのです。 実際の表示とSQL内のデータベースで違っていました。すいません。 それなので >商品名を取得できるようになっていますか? はobj_r("型番")が表示出来ていればいいのでしょうか? また、ラジオボタンをクリックするとスクリプトエラーがonClick='setSelect(this.value)'のところで 「オブジェクトがありません」とでています。 今回のソースを入れる前からですが・・・ 分かりますでしょうか?
補足
anotu_kageさんいろいろありがとうございました。 ラジオボタンの基本から作成して、解決することが出来ました。 onClick=の問題はForm指定が間違っていました。 お時間割いていただき誠にありがとうございました。
- anotu_kage
- ベストアンサー率27% (17/62)
>実は取得できておりません。 >現レコードの位置がわかっておりません。 取得方法で特に間違っている項目は質問内容を見る限り見当たりませんので、考えられる原因として以下が考えられます。 1.valueにセットしている"item"に商品名が入っていない。 アドバイス: HTMLソース表示か、HTML部分にデバッグプリント(%>item=<%=item%><br><%)で確認してみて"item"に商品名がちゃんと入っているか確認してみてください。 入っていないならば、"item"変数に最初に商品名が格納されている変数を代入してください。 例: item = objRS.Fields("商品名の変数").Value 2.選択から取得までの間にどこかで"item"が初期化され値が消えてしまっている。 アドバイス: "item"はグローバル変数(いろいろな場所で使用する変数)のような感じがするのでプログラム内のどこかで初期化していないか確認してみてください。 選択するファイル→受け取るファイルの間のインクルードファイルなど。 3.ラジオボタンを形成するプログラムのindex番号が間違っているため、 <INPUT type='radio' name='sel' value='" & item & "' > の"item"内に商品名が入っていない。 アドバイス: ラジオボタンは動的に生成(ループ)するとおっしゃっていたので"item"は配列になっていますか? 例: item(0) = "商品名A" item(1) = "商品名B" item(2) = "商品名C" とした場合、 <% for i = 0 to 2 %> <INPUT type='radio' name='sel' value='" & item(i) & "' > <% next %> のようにコーディングしなければいけません。 恐らく"3"のような感じがします。 下記URLを参照してください。
お礼
anotu_kageさんすばやい回答ありがとうございます。 いろいろご教授して頂いているのですが、よく分かりません。すいません。 itemの配列ですが約4000レコードあるのですがきちんと for i=0 to 4000のように設定するのでしょうか? 実際には下記のように書いています。for nextを上手く使えるでしょうか? <table border=1> <tr><th>選択</th><th>品コード</th><th>商品名</th></tr> <% Do Until(obj_r.EOF) Response.Write("<tr><td><INPUT type='radio' name='sel' Value='" & item & "'' onClick='setSelect(this.value)'></td>") Response.Write("<td>" & obj_r("品コード") & "</td>") Response.Write("<td>" & obj_r("型番") & "</td></tr>") obj_r.MoveNext Loop %> 私も多分3番の辺りだと思います。 ちなみに1番の表示ファイルはaspでは駄目なんですよね。 <form action="aaa.html" method="post"> でaaa.html側に(%>item=<%=item%><br><%を貼り付けてあげればよいのですか?
- anotu_kage
- ベストアンサー率27% (17/62)
まず最初に"item"変数の中に取得したい商品名は入っていますか? 入っているならば取得する変数は"sel"になるので以下のようになります。 受け取り先のファイル(form action="aaa.asp"ならaaa.asp)内で, '---------------- サンプル start ----------- sel = Request.Form("sel") '---------------- サンプル end ------------- "sel"で取得した値がtureになった"item"です。 どうしても"item"で取得したい場合は, '---------------- サンプル2 start ----------- item = Request.Form("sel") '---------------- サンプル2 end ------------- にすれば出来ると思いますが,メンテナンスの面からあまりお勧めできません。 下記URLが参考になると思います。
お礼
anotu_kageさんご回答ありがとうございました。 >取得したい商品名は入っていますか? 実は取得できておりません。 現レコードの位置がわかっておりません。 Response.Write "<INPUT type='radio' name='sel' value='" & item & "' onclick='setselect(this.value)'> なども試しているのですが、上手くいきません。 取得方法は間違っているでしょうか? 宜しくお願いします。
お礼
anotu_kageさんいろいろありがとうございました。 昨日無事解決いたしました。 一度「お礼」で送った後にプログラムのミスに気づき、解決をお知らせしようと、「補足を記入する」にて送ったのですが、行き違いがあったようです。 今回の件はほぼJavaScliptの設定ミスでした。 まず、ラジオボタンの基本から作成していくと指定フォームが間違っていました。なので値がとれていませんでした。 また、onClick=の問題はfor(i=0;i<10; i++)のところでi<10の数(ラジオボタンの数)が間違っていました。 一つのプログラムでいろいろテストなどもしていたので、Formもスクリプトもごちゃごちゃしていましたし、コメントアウトの消し忘れなどあり、分からなくなってしまいました。 新しいことをするには別プロで行うのがいいのですかね? お時間割いていただき誠にありがとうございました。