出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
[2742] checkboxの値で判定 |
投稿者:miroさん 2002/09/30 18:57:37 |
はじめまして! さっそくなのですが、 ASPでプログラムを作っています。 チェックボックスを作成してチェックが入っている場合と 入っていない場合で処理を分ける事はできるのでしょうか? If文みたいなものを使ってなのですが。 よろしくお願いします |
[2743] Re:checkboxの値で判定 |
投稿者:RIUさん 2002/10/01 8:53:00 |
RIUです。 普通にIf文を使って出来ますが・・・ If CBool(Request.Form("CHECKBOX")) Then チェックがある場合の処理 Else チェックが無い場合の処理 End If |
[2746] Re:checkboxの値で判定 |
投稿者:miroさん 2002/10/01 16:30:02 |
> RIUです。 > > 普通にIf文を使って出来ますが・・・ > > If CBool(Request.Form("CHECKBOX")) Then > チェックがある場合の処理 > Else > チェックが無い場合の処理 > End If ありがとうございます。 上記の構文で試してみたのですが、 型が一致しません。とエラーが出てしまいます。 CheckBoxの構文が間違っているのでしょうか? Do Until Rs.EOF Response.Write "<td nowrap><input type='checkbox' name='CHECK'> Rs.MoveNext Loop という感じにしているのですが。。。 よろしくお願いします。 |
[2747] Re:checkboxの値で判定 |
投稿者:RIUさん 2002/10/01 16:52:21 |
RIUです。 なら、 If Request.Form("CHECK")=true Then : Else : End If ただ、name="CHECK"が複数できるみたいですので、 nameに配列的要素を持たせた方が良いかと思います。 formの受け渡しがキチンと出来ているかも疑問ですが・・・^^; |
[2757] Re:checkboxの値で判定 |
投稿者:miroさん 2002/10/02 9:55:23 |
> formの受け渡しがキチンと出来ているかも疑問ですが・・・^^; ありがとうございます。 確かに。。。受け渡しがきちんとできているのかがわかりません。 一覧のチェックボックスにチェックされている値を 送る場合、どのようにすればよいのですか? 今は以下のように記述しています。 If Request.QueryString("Sel")="1" then Call test() Response.end Response.Write "<form method='post' action='main.asp?Sel=1'>" Do Until objRs.EOF <input type='checkbox' name='CHECK'> objRs.MoveNext Loop Response.Write "</form>" Sub test() Check = Request.Form("CHECK") response.write Check End Sub という感じにしているのですが、上手くいきません。 よろしくお願いします。 |
[2758] Re:checkboxの値で判定 |
投稿者:RIUさん 2002/10/02 10:58:21 |
RIUです。 #流れを整理させてください。 (1)同一ページでチェックされたかどうかをダイナミックに判断しようとしているのですか? (2)それとも、一度SUBMITして、別ページ(次のページ)で判断しようとしていますか? (1)の場合なら http://www.openspc2.org/reibun/javascript/form_checkbox/001/index.html が参考になります。 (2)の場合なら '---hoge.asp--- Response.Write"<form method='post' action='main.asp>" Response.Write"<input type='checkbox' name='CHECK'>" Response.Write"<input type='submit' value='送信'>" Response.Write"</form>" '---main.asp--- If Request.Form("CHECK")=true Then : Else : End If が参考になるかと思います。 ><input type='checkbox' name='CHECK'> #Response.Write"<input type='checkbox' name='CHECK'>"にしないとどちらにしてもエラーになりますが~~; |
[2759] Re:checkboxの値で判定 |
投稿者:miroさん 2002/10/02 11:32:59 |
> (2)の場合なら > '---hoge.asp--- > Response.Write"<form method='post' action='main.asp>" > Response.Write"<input type='checkbox' name='CHECK'>" > Response.Write"<input type='submit' value='送信'>" > Response.Write"</form>" > > '---main.asp--- > If Request.Form("CHECK")=true Then > : > Else > : > End If > が参考になるかと思います。 ありがとうございます。(2)のようにやりたいと思います。 main.aspでCHECKの中身を確認すると、onという文字が入っています。 If Request.Form("CHECK")= true Then response.write "チェックあり" Else response.Write "チェックなし" End If とやると、onが入っていてもいなくても チェックなしを選択してしまいます。 onが入っている場合は、チェックありを選択したいのですが。。。 後ですね。例えば、DB内のデータを一覧で表示して そのデータ一つ一つにチェックボックスを作ってそのチェックボックス を チェックしたデータのみを取り出す事って可能なのですか? 先ほどのプログラムで複数のデータをチェックして変数の中を 確認すると、on,onとチェックした分onがあるだけで、 どのように判定したらよいのかがわかりません。 よろしくお願いします。 |
[2760] Re:checkboxの値で判定 |
投稿者:RIUさん 2002/10/02 13:28:52 |
RIUです。 サンプルかきました。 '---hoge.asp--- <html> <head> </head> <body> <form method="post" action="main.asp"> <input type="checkbox" name="CHECK" value="True" /> <input type="submit" value="送信"> </form> </body> </html> '---main.asp--- <html> <head> </head> <body> <% If Request.Form("CHECK") = "True" Then Response.Write "チェックされています" Else Response.Write "チェックされていません" End If %> </body> </html> >チェックしたデータのみを取り出す事って可能なのですか? SQL文のWHERE句を WHERE CHECK=True 'CHECKはフィールド名 で抽出できないですか? |
[2761] Re:追記 |
投稿者:RIUさん 2002/10/02 15:34:43 |
RIUです。 main.aspの中身を以下のようにしても出来ます。 <% If CBool(Request.Form("CHECK")) = True Then Response.Write "チェックされています" Else Response.Write "チェックされていません" End If %> |
[2762] checkboxの罠 |
投稿者:北岳さん 2002/10/02 16:07:29 |
この件、先日気付いたばかりですが。。。 下のASPを動かすと、画面に10個のチェックボックスができます。 ----------------1.asp------------ <html><body> <form action="1.asp" method="post"> <% response.write "<br>◆" & Request.Form("chk1") & vbcrLf for i=1 to 10 response.write "<br><input type='checkbox' name='chk1' value='OK'>" & i & vbcrLfnext %> <input type="submit" value="NEXT"> </form> </body></html> ----------------------------------- 今、1,3,5,7,9番目のチェックボックスにチェックを入れてsubmitすると、 ◆OK, OK, OK, OK, OK ---(1) が表示されます。 (◆OK,, OK,, OK,, OK,,OK , となることを期待しても、そうなりません。) 次に、2,4,6,8,10番目のチェックボックスにチェックを入れてsubmitすると、同じく ◆OK, OK, OK, OK, OK ---(2) が表示されます。 (◆, OK,, OK,, OK,, OK,,OK となることを期待しても、そうなりません。) なお、valueを指定しないと、(1)も(2)も、 ◆on, on, on, on, on となります。 --------------------- 結局、10個とも name が chk1 で同じだと、Request.Form("chk1")の戻り値は、カンマ区切りの1つの文字列になり、選択されないものが何番目か不明⇒選択された個数しか判らなくなります。 --------------------- で、 for i=1 to 10 response.write "<br><input type='checkbox' name='chk'" & i & "' value='OK'>" & i & vbcrLf next のようにすれば、 Request.Form("chk1"),Request.Form("chk2"),,, が個々に OK か null のどちらかを取るので、選択されたかどうかを個別に区別できます。 |
[2763] Re:checkboxの罠 |
投稿者:miroさん 2002/10/02 16:44:51 |
>RIUさん >チェックしたデータのみを取り出す事って可能なのですか? SQL文のWHERE句を WHERE CHECK=True 'CHECKはフィールド名 で抽出できないですか? サンプルをありがとうございました。 valueを設定してなかったからでした。ありがとうございました。 上記なのですが、WHERE句を使うという事はDBにCHECKの 値を登録しないといけないですよね? 登録しないで判別する方法はないのですか? よろしくお願いします。 >北岳さん ありがとうございます。この件は僕も不思議に思っていました。 どうやって判別するんだろう?って。。。 なるほど〜そのようにすれば、よかったのですね。 |
[2764] Re:checkboxの罠 |
投稿者:RIUさん 2002/10/02 17:28:24 |
RIUです。 > 上記なのですが、WHERE句を使うという事はDBにCHECKの > 値を登録しないといけないですよね? > 登録しないで判別する方法はないのですか? > よろしくお願いします。 #DBからチェックボックスにチェックがあるものを抽出じゃなかったのね^^; #私の勘違いです。(すんまそん・・・) 北岳さんの手法が必要になりますね^^ #1〜i個の配列のようにして IF文をLOOPさせれば、チェックがついている物のみ表示させることが出来ます。 for n=1 to 配列の数 If CBool(Request.Form("CHECK" &n)) = True Then チェックされている物の表示 End If next こんな具合かな? |
[2765] Re:checkboxの罠 |
投稿者:miroさん 2002/10/03 10:34:45 |
> RIUです。 > > > 上記なのですが、WHERE句を使うという事はDBにCHECKの > > 値を登録しないといけないですよね? > > 登録しないで判別する方法はないのですか? > > よろしくお願いします。 > > #DBからチェックボックスにチェックがあるものを抽出じゃなかったのね^^; > #私の勘違いです。(すんまそん・・・) > > 北岳さんの手法が必要になりますね^^ > #1〜i個の配列のようにして > IF文をLOOPさせれば、チェックがついている物のみ表示させることが出来ます。 > > for n=1 to 配列の数 > If CBool(Request.Form("CHECK" &n)) = True Then > チェックされている物の表示 > End If > next > > こんな具合かな? > ありがとうございます。 > #DBからチェックボックスにチェックがあるものを抽出じゃなかったのね^^; > #私の勘違いです。(すんまそん・・・) いえいえ。私の説明不足でした。 申し訳ありませんでした。 > for n=1 to 配列の数 > If CBool(Request.Form("CHECK" &n)) = True Then > チェックされている物の表示 > End If > next ループの配列の数なのですが、レコードカウント分ループしたい 場合って For n=1 to Rs.RecordCount ではダメでしたっけ? やはり、Checkの値をDBに書き込んでSelect文で抽出するしか 方法はないのかな。。。 よろしくお願いします。 |
[2766] RecordCount |
投稿者:北岳さん 2002/10/03 12:19:23 |
> For n=1 to Rs.RecordCount > ではダメでしたっけ? でOKですが、その1行上に Response.write Rs.RecordCount を書いたとき、-1が返る場合はこのサイトで 「RecordCount」を検索すると、たとえば [1338] RecordCountがいつも-1 投稿者:tozさん 2002/01/02 14:26:29 [1339] 賀春2002 投稿者:北岳さん 2002/01/03 9:03:43 が出ます。 |
[2767] Re:RecordCount |
投稿者:RIUさん 2002/10/04 11:16:12 |
RIUです。 '---hoge.asp--- <html> <head></head> <body> <form method="post" action="main.asp"> <% n=1 for n=1 to 10 %> <br><input type="checkbox" name="CHECK<%=n %>" value="True" /><%=n %> <% next %> <input type="hidden" name="n" value="<%=n-1 %>" /> <input type="submit" value="送信" /> </form> </body> </html> '---main.asp--- <html> <head></head> <body> <% For i=1 To (Request.Form("n")) CHECK=Request.Form("CHECK" & i) If CBool(Request.Form("CHECK"&i)) = True Then Response.Write "<br>チェックされています"& i End If Next Response.Write "<br>チェックされている物のみ表示しました。" %> </body> </html> こういった事がしたいのでは? |
[2769] 補足 |
投稿者:RIUさん 2002/10/04 11:23:50 |
RIUです。 hoge.aspをDBから抽出するなら <% n=1 Do While Not rs.EOF %> <br><input type="checkbox" name="CHECK<%=n %>" value="True" /><%=n %> <% rs.MoveNext n=n+1 Loop %> となります。 |
TreeBBS For ASP V.0.1.3 |