プロが教えるわが家の防犯対策術!

HTML(ASP)でプログラミングをしています。
入力フォームにチェックボックスが複数個あり、同一項目名称でインデックスをしようしていますが、ボタン押下時に遷移先のプログラムでインデックスエラーが発生し項目が認識されません。

デバッグの結果チェックボックスの項目が『Off』の場合に項目が認識されていない事がわかりました。
以前同様の画面を作成した時にはインデックスは使用していませんでしたが正常に機能していました。

チェックボックスではインデックスを使用するとエラーになる等のルールがあるのでしょうか?

ご存知の方いらっしゃいましたらお教え願います。

OS:WIN2K
DB:SQLServer2K

プログラム抜粋
▲入力フォーム▲
<form method=post name=form1 target=_top action="upd.asp">
 <input type=checkbox name=outKa1 value="1" checked>
 <input type=checkbox name=outKa2 value="1" checked>
 <input type=checkbox name=outKa3 value="1" checked>
 <input type=checkbox name=outKa1 value="1" checked>
 <input type=checkbox name=outKa2 value="1" checked>
 <input type=checkbox name=outKa3 value="1" checked>
 <input type=submit value="送信">
</form>

▲upd.asp▲
<%
 For intOcnt = 1 To 2
  For intIcnt = 1 To 3
   If Request.Form("outKa" & intIcnt)(intOcnt) = "1" Then
    ■更新処理■
   End If
  Next
 Next
%>

■更新処理■上部のIF文で『インデックスが有効範囲にありません』とエラーになります。

A 回答 (1件)

チェックボックスはチェックされていない場合、リクエストに含まれません。


従って、リクエスト情報に何個含まれるかを事前に調べその範囲内に収まるようにインデックスを指定する必要があります。

ASPは相当昔に触ったっきりで覚えていないのですが
Request.Form("outKa1")の場合、
outKa1が1つしかチェックされていなければ当然リクエストには1つしかのってこないので
返される配列はインデックス0しか持ちえません。
その場合にインデックス1を指定すれば当然範囲外ですのでエラーになるのでしょう。
    • good
    • 0
この回答へのお礼

マヂですか(ーー;)
それは驚きです。

しかしこれで原因がわかりました。
早々のご解答有難うございました。

お礼日時:2007/04/25 18:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!