- ベストアンサー
チェックボックスの入力チェック
フォームメール用のCGIを作成しているのですが、チェックボックスの入力チェックをCGIでおこないたい場合、どのようにすればよいのでしょうか? 複数選択可で1つも選択されていない場合エラーメッセージを出すようにしたいと思っており、チェックボックスには1個づつ個別の変数を用意しています。 if ($name eq "") { print "Content-type: text/html;charset=euc-jp\n\n"; print "お名前を入力してください。"; exit(0); } テキストボックスはこのように入力チェックをおこなっています。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
チェックボックスの名前がチェックボックスだとします。 <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); }
その他の回答 (2)
- Ethersky
- ベストアンサー率71% (168/235)
> if($checkbox eq "0"){ 数値なんですからeq使わず==使いましょうよ。 いっそのこと unless($checkbox){ でもいいと思いますけど・・・。
お礼
たしかにその方がスマートですね。早速ためしてみます。 ありがとうございました。
- rara_sun
- ベストアンサー率50% (271/539)
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つもない場合にエラーメッセージを出す方法を教えていただければと思うのですが... よろしくお願いいたします。
お礼
なるほどすごくよくわかりました。早速ためしてみましたがうまく動作しました。 ありがとうございました。