新しく質問する

チェックボックスの入力チェック

役に立った:2件
  • 質問者:73nori
  • 投稿日時:2003/07/08 10:32
  • 困り度:困ってます
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

フォームメール用のCGIを作成しているのですが、チェックボックスの入力チェックをCGIでおこないたい場合、どのようにすればよいのでしょうか?
複数選択可で1つも選択されていない場合エラーメッセージを出すようにしたいと思っており、チェックボックスには1個づつ個別の変数を用意しています。
if ($name eq "") {
print "Content-type: text/html;charset=euc-jp\n\n";
print "お名前を入力してください。";
exit(0);
}
テキストボックスはこのように入力チェックをおこなっています。
よろしくお願いいたします。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:2件)
  • 参考になった:0件
  • 回答者:Ethersky
  • 回答日時:2003/07/09 22:03

> if($checkbox eq "0"){

数値なんですからeq使わず==使いましょうよ。
いっそのこと
unless($checkbox){
でもいいと思いますけど・・・。

通報する

この回答へのお礼

たしかにその方がスマートですね。早速ためしてみます。
ありがとうございました。

  • 参考になった:0件

No.2ベストアンサー20pt

  • 回答者:egypt
  • 回答日時:2003/07/09 19:25

チェックボックスの名前がチェックボックスだとします。
<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);
}

通報する

この回答へのお礼

なるほどすごくよくわかりました。早速ためしてみましたがうまく動作しました。
ありがとうございました。

  • 参考になった:0件

No.1ベストアンサー10pt

  • 回答者:rara_sun
  • 回答日時:2003/07/08 12:42

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つもない場合にエラーメッセージを出す方法を教えていただければと思うのですが...

よろしくお願いいたします。

この回答へのお礼

ありがとうございました。
問題解決いたしました。

  
このQ&Aは役に立ちましたか?(役に立った:2件)

このページのトップへ

Facebook公式ページ

公式Twitter