• ベストアンサー

入力内容のチェック・・・『または』の場合

いつもお世話になっております。 お問い合わせフォームCGIで未入力のチェックを行っています。 CGIは前任者が作ったもので、引き継いだ私自身はCGI初心者です。 sub sendmail { if ($namecheck eq "1" && $in{'name'} eq "") { &error("お名前は必ずご記入ください"); } elsif ($op_value1 eq "") { &error("フリガナは必ずご記入ください"); } ・ ・ ・ ↑こんな感じです。 $op_value9~$op_value12の値(フォーム上ではチェックボックスを使用)についても入力チェックを行いたいのですが、9~12を1グループと考え、いずれかに値が入っていた場合はエラーを出さずにOKとしたいと思います。 そこで、初心者なりにネットを調べ elsif ($op_value9 eq "" || $op_value10 eq "" || $op_value11 eq "" || $op_value12 eq "") { &error("項目を一つ以上選択してください"); } &&を||にすればいいのでは・・・?という結論にいたったのですが、 ダメでした。 どうしたらいいでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • TA-HT81S
  • ベストアンサー率39% (72/184)
回答No.1

$err_flg = 0; if($op_value9 ne ""){ $err_flg++; } : if($op_value12 ne ""){ $err_flg++; } if($err_flg > 0){ &error("項目を一つ以上選択してください"); } ってこと?

CHI-512
質問者

お礼

ご回答ありがとうございました。 ご記入いただいたソースを当てはめてみました。 無事、解決です。 とても助かりました。 また、今までは私が記入したようなエラーメッセージの出し方しか知りませんでしたが、ご記入いただいたソースをじっくり観察し、0を1や2に変えたり、>を<に変えたり、neをepにしたりすることでフォームの入力内容チェックに関して、色々なパターンでエラーメッセージを出すことが出来るようになりました。 一歩前進しました。 本当にありがとうございました。

その他の回答 (1)

  • maura
  • ベストアンサー率46% (48/104)
回答No.2

$op_value11 eq "" だと $op_value11 に 値が入っていない場合なので $op_value11 に値が入っている場合は $op_value11 ne "" と書きます。 eq -> ne に変更しましょう。

CHI-512
質問者

お礼

ご回答ありがとうございました。 私が思っていた箇所とは異なる箇所に原因があるとは思いませんでした…。 無事、問題が解決いたしました。 CGIは奥が深い上に難しいですね。 是非勉強したいと思っている分野ですが、敷居が高くて中々どこから手をつけていいか分かりません。 精進いたします。 本当にありがとうございました。

関連するQ&A

専門家に質問してみよう