![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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で質問しましょう!
似たような質問が見つかりました
- 英語 Pre-existing periapical pathology, when the apices 1 2023/04/27 22:27
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- TOEFL・TOEIC・英語検定 英文法(他動詞・自動詞の解釈)you pre-register online 1 2023/03/09 00:18
- その他(プログラミング・Web制作) ColabでのPytorchのエラー 1 2022/11/19 20:51
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- その他(プログラミング・Web制作) AndroidStudio エラー と インストール の件 1 2023/06/27 12:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlをバージョンアップしたら...
-
教えて下さい。
-
VBSがコンパイルエラーになりま...
-
SWI-Prologでのエラーに関して
-
構文エラーのある行番号を知りたい
-
例外処理のフローチャートの記...
-
ユーザー定義関数に#NAME?が返...
-
Excel VBAでリンク切れをチェッ...
-
モジュールの最大数はいくつな...
-
グラフのX,Y座標を取得したい
-
LCD ディスプレイを Raspberry ...
-
【vba】フォームに書いてあ...
-
'Range'メソッドは失敗しました
-
標準モジュールを削除したい。(...
-
VBAで別モジュールへの変数の受...
-
印刷後メッセージボックスを表...
-
モジュールとは何ですか
-
acwzlibとは?
-
本当にPublicな変数(配列で)
-
VBでグローバル変数を宣言するには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSがコンパイルエラーになりま...
-
教えて下さい。
-
perlをバージョンアップしたら...
-
SWI-Prologでのエラーに関して
-
erf(x)とerfc(x)のカタカナ読み...
-
POSTで送信するとエラーになる
-
au「W54S」だけcgi-lib.plで不...
-
【python】requestsでdataとし...
-
w3cの検証エラー?
-
WebClientの文字列送信にてエラー
-
Pealでエラーメール自動処理
-
ホームページをHTTPS化したらbi...
-
英字のみを検索する正規表現に...
-
CGIの接続エラー
-
Pythonプログラミングでエラー
-
windows7のperlでaccdb接続でエ...
-
perl ver5.24.0 x68版で、requi...
-
ラズパイ4からGmailへの...
-
Unityでアニメーションできない
-
powershellで引数受け取り時に...
おすすめ情報