チェックボックスの入力チェック
フォームメール用のCGIを作成しているのですが、チェックボックスの入力チェックをCGIでおこないたい場合、どのようにすればよいのでしょうか?
複数選択可で1つも選択されていない場合エラーメッセージを出すようにしたいと思っており、チェックボックスには1個づつ個別の変数を用意しています。
if ($name eq "") {
print "Content-type: text/html;charset=euc-jp\n\n";
print "お名前を入力してください。";
exit(0);
}
テキストボックスはこのように入力チェックをおこなっています。
よろしくお願いいたします。
回答(3件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
> if($checkbox eq "0"){
数値なんですからeq使わず==使いましょうよ。
いっそのこと
unless($checkbox){
でもいいと思いますけど・・・。
この回答へのお礼
たしかにその方がスマートですね。早速ためしてみます。
ありがとうございました。
No.2ベストアンサー20pt
チェックボックスの名前がチェックボックスだとします。
<INPUT type="checkbox" name="チェックボックス" value="a">
<INPUT type="checkbox" name="チェックボックス" value="b">
<INPUT type="checkbox" name="チェックボックス" value="c">
cgiで初期値に$checkbox=0を設定しておき、デコード時に
$nameに"チェックボックス"が出てきたら$checkboxの値が
増加するようにします。
if($name eq "チェックボックス"){
$checkbox=$checkbox+1;
}
後はテキストボックスのときと同じように$checkboxの値が
0の時にエラーがでるようにすればよいのではないでしょうか
if($checkbox eq "0"){
print "Content-type: text/html;charset=euc-jp\n\n";
print "どれかチェックしてください。";
exit(0);
}
この回答へのお礼
なるほどすごくよくわかりました。早速ためしてみましたがうまく動作しました。
ありがとうございました。
No.1ベストアンサー10pt
valueに値を設定してあげることで、
CGI側で判断ができるようになります。
例えば、
<INPUT type="checkbox" name="CHECK_1" value="123" checked>
<INPUT type="checkbox" name="CHECK_2" value="456">
<INPUT type="checkbox" name="CHECK_3" value="789">
だったとすると、
CGIに送信されると
CHECK_1=123
CHECK_2=
CHECK_3=
となります。
つまり、チェックが入ったもののチェックボックスのvalue値が送付されます。
・・・こういう回答で良いのですよね?
質問の文意を取り違えていたらご容赦を・・
この回答への補足
早速の回答ありがとうございます。もし可能であればCHECK_×をひとくくりとしてチェックが1つもない場合にエラーメッセージを出す方法を教えていただければと思うのですが...
よろしくお願いいたします。
この回答へのお礼
ありがとうございました。
問題解決いたしました。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











