プロが教える店舗&オフィスのセキュリティ対策術

お世話になっております。
http://odn.okwave.jp/kotaeru.php3?q=1948331
の質問に一部関連しているので続けてお伺いしておけばよかったのですが、
締め切ってしまいましたので申し分けありませんが新たに質問させて頂きました。

cgi/perlを使用したメールフォームで製品登録を行えるものを作成中です。

一つの製品についてkounyuu_01,shouhin_01,price_01という3つの入力項目があり、
何れかの項目が入力されていれば他の項目も必須。
という条件を設けたいと思っています。上記「入力規則をまとめて定義」(リンク)の質問でがるさんにアドバイスいただいた記述を少し変えればできるかなと思い試したのですが力及ばずでした。

置き換えなどが良くわからないので直に以下のようにも書いてみたのですが、全て入力してもエラーが返ってきてしまいます。

if(($form{kounyuu_01} eq "") && ($form{shouhin} eq "") && ($form{price_01} eq "")){ &error('機器#2の情報を入力してください');
}elsif(($form{kounyuu_01} eq "") | ($form{shouhin} eq "") | ($form{price_01} eq "")){ &error('機器#2の何れかの情報が未入力です');
}

また、
「入力規則をまとめて定義」(リンク)
でEtherskyさんに(共通項目_数字)の場合まとめて定義する方法をご教授頂いたので、
応用して上記を「(xxxx_01)だった場合」
のように今度は01をキーにまとめて定義できたらと思うのですがこちらもさっぱりです。。

どうぞアドバイスのほどよろしくお願いいたします。m(__)m

A 回答 (1件)

$n = 0;



for(1..10){
$i = sprintf("%02d",$_);
$flag = 0;

if($form{'kounyuu_'.$i} ne "" || $form{'shouhin_'.$i} ne "" || $form{'price_'.$i} ne ""){$flag = 1;}
if($flag == 1 && ($form{'kounyuu_'.$i} eq "" || $form{'shouhin_'.$i} eq "" || $form{'price_'.$i} eq "")){&error('入力を忘れている項目があります');}

if($form{'kounyuu_'.$i} ne ""){
$n++;
if($form{'kounyuu_'.$i} !~ /^\d{4}\/\d{2}\/\d{2}$/){
&error('販売日の書式が間違っています。');
}
}
}

if(!$n){&error('最低一つ、販売日の入力が必要です。');}
    • good
    • 0
この回答へのお礼

Ethersky度々ありがとうございます。
おかげで思ったような処理ができるようになりました!!
本当に助かりました。

お礼日時:2006/02/08 10:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!