
perl初心者ながら暇見て住所CGIフォームを作っています。
だんだん完成してきましたが今一歩です(T_T)ご指導下さい!
名前、電話、都道府県、住所、の4つの項目があります。
{'nam'} {'tel'} {'pre'} {'add'}
{'pre'}はSELECToption 他はtextFORM
全部記入した時には、次に進めてOKなのです。
if ((($in{'nam'}) && ($in{'tel'}) && ($in{'add'}) && ($in{'pre'} > "0")) { print
全部未記入時でも、次に進んでも無記入なのでOKです。
エラー時に&errorのエラー画面に飛ばす事も出来ました。
ただ、書き忘れ時が困るので
{'nam'} {'tel'} {'pre'} {'add'}の内、1~3つとか記入して
他が抜けてたりした時だけエラーにしたいのです。
でも間違って空スペースとかでエラーが出て欲しくないし・・・
まずは下記でやってもまだダメです、($in{'pre'} > "0")が未選択時がダメです(T_T)
色々やってみたのですが、何か良い方法ありませんか?
#### ($in{'pre'} > "0")は、"1"以上が「真」の条件です。
if ((($in{'nam'} eq "") || ($in{'tel'} eq "") || ($in{'add'} eq "")) && ($in{'pre'} > "0")) { &error("エラー"); }
No.2ベストアンサー
- 回答日時:
ANo.1です。
すみません、読み違えてました。全部入力か、全部未入力ならOKなんですね。
本当はif文を分けて、しかもelseを使った方が理解しやすい気はしますが、
if ( ( ($in{'nam'} eq "") || ($in{'tel'} eq "") || ($in{'add'} eq "") || ($in{'pre'} <= "0") ) && ( ($in{'nam'} ne "") || ($in{'tel'} ne "") || ($in{'add'} ne "") || ($in{'pre'} > "0") ) ){ &error("エラー"); }
でいいのかな。
希望通りになりました!ありがとうございました。
>本当はif文を分けて、しかもelseを・・・
その点は、初心者なので今後の課題で。まず問題なく動けばOKです。
No.3
- 回答日時:
チェック用のサブルーチン作っちゃいますけれどね、私なら。
条件煩雑だし、将来拡張もできるようにしたいから。
sub cond_check {
my ($in) = @_;
my $cond_check = 0;
for my $key ('nam','tel','add') {
++$cond_check if ($in->{$key} ne '');
}
++$cond_check if ($in->{'pre'} > 0);
if ($cond_check == 0 || $cond_check == 4) {
return 1;
}
return;
}
呼び側は、
if (! cond_check(\%in) ) { &error("エラー"); }
わざわざありがとうございました。
そうですよね・・・本当は、そんな感じでにやりたいのですが
perlの基本も知らないので他のエラーと合わせるのがちょっと難しいです・・・
もう少し勉強してから将来変更させて頂きます。
No.1
- 回答日時:
if ( ($in{'nam'} eq "") || ($in{'tel'} eq "") || ($in{'add'} eq "") || ($in{'pre'} <= "0") ) { &error("エラー"); }
では、ダメなのでしょうか?
この回答への補足
それもやったんですが全部未記入時にもエラーになりますよね?。
全部未記入時には、
未記者はスルーでOKなのでエラーを出したくないのです・・・
記入希望者が途中まで記入した場合の記入漏れ防止で
4つの内、1~3項目のみ記入時エラーにしたいのです。お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースが返すエラー文字...
-
モジュールとクラスの違いって...
-
「デバイスは PRN を初期化でき...
-
SendKeysの使い方について
-
acwzlibとは?
-
クリアーとデリート
-
【Excel2016】結合されたセルを...
-
例外処理のフローチャートの記...
-
同一筐体におけるPerlの複数バ...
-
Win32でInputBoxを実装するには?
-
ユーザー定義関数に#NAME?が返...
-
bad interpreter:エラーについて
-
cygwinでcshが認識されず困って...
-
flockの挙動がおかしい。。。
-
Sub Workbook_Open()でユーザー...
-
VBAでoutlook365が起動しません。
-
グラフのX,Y座標を取得したい
-
クラスモジュールを使わないと...
-
VBのフォームモジュールと標準...
-
Friend は標準モジュールじゃ宣...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSがコンパイルエラーになりま...
-
教えて下さい。
-
perlをバージョンアップしたら...
-
メールアドレスについて
-
w3cの検証エラー?
-
ホームページをHTTPS化したらbi...
-
WebClientの文字列送信にてエラー
-
Pythonプログラミングでエラー
-
erf(x)とerfc(x)のカタカナ読み...
-
powershellで引数受け取り時に...
-
CGIの接続エラー
-
POSTで送信するとエラーになる
-
【python】requestsでdataとし...
-
VBscriptのエラーメッセージの...
-
ruby mechanize アクセス出来ない
-
例外処理のフローチャートの記...
-
「デバイスは PRN を初期化でき...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
Application.OnKey:項目入力中...
おすすめ情報