• ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
  • egypt
  • ベストアンサー率44% (15/34)
回答No.2

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

73nori
質問者

お礼

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

その他の回答 (2)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.3

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

73nori
質問者

お礼

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

  • rara_sun
  • ベストアンサー率50% (271/539)
回答No.1

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値が送付されます。 ・・・こういう回答で良いのですよね? 質問の文意を取り違えていたらご容赦を・・

73nori
質問者

お礼

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

73nori
質問者

補足

早速の回答ありがとうございます。もし可能であればCHECK_×をひとくくりとしてチェックが1つもない場合にエラーメッセージを出す方法を教えていただければと思うのですが... よろしくお願いいたします。

関連するQ&A