出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

checkboxの値で判定   miroさん [2002/09/30 18:57:37] [2742]
  Re:checkboxの値で判定   RIUさん [2002/10/01 8:53:00] [2743]
    Re:checkboxの値で判定   miroさん [2002/10/01 16:30:02] [2746]
      Re:checkboxの値で判定   RIUさん [2002/10/01 16:52:21] [2747]
        Re:checkboxの値で判定   miroさん [2002/10/02 9:55:23] [2757]
          Re:checkboxの値で判定   RIUさん [2002/10/02 10:58:21] [2758]
            Re:checkboxの値で判定   miroさん [2002/10/02 11:32:59] [2759]
              Re:checkboxの値で判定   RIUさん [2002/10/02 13:28:52] [2760]
                Re:追記   RIUさん [2002/10/02 15:34:43] [2761]
              checkboxの罠   北岳さん [2002/10/02 16:07:29] [2762]
                Re:checkboxの罠   miroさん [2002/10/02 16:44:51] [2763]
                  Re:checkboxの罠   RIUさん [2002/10/02 17:28:24] [2764]
                    Re:checkboxの罠   miroさん [2002/10/03 10:34:45] [2765]
                      RecordCount   北岳さん [2002/10/03 12:19:23] [2766]
                        Re:RecordCount   RIUさん [2002/10/04 11:16:12] [2767]
                          補足   RIUさん [2002/10/04 11:23:50] [2769]

[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
Program By YasNet