• ベストアンサー
  • 困ってます

if 文  わかんない・・・

都道府県セレクトoptionフォームにて 都道府県を選択しない場合のエラーを なんとか2行で出せるようになったのですが 選択して下さい = value="0" if ($in{'pre'} eq '0') { &error("都道府県の選択!!"); } if ($in{'pre'} eq "") { &error("都道府県の選択!!"); } これを1行にするにはどうしたらいいのでしょう? ↓↓はダメでした(≧m≦) if ($in{'pre'} eq "" || '0') { &error("都道府県を選択!!"); }

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数9
  • ありがとう数3

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

  • ベストアンサー
  • 回答No.4
  • Tacosan
  • ベストアンサー率23% (3656/15482)

unless は if の逆で「与えられた条件が成り立たないときにブロックを実行する」という文です. 今条件として $in{pre} とだけ書いてありますが, これだと「空文字列か (数値の) 0, あるいは (文字列の) "0" のときに偽, その他のときに真」となります. つまり, unless ($in{pre}) と書くと結果的に 「$in{pre} が空文字列か数値の 0, もしくは文字列の "0" のときに以下のブロックを実行する」という意味になります.

共感・感謝の気持ちを伝えよう!

質問者からのお礼

2度も(補足にまで)回答いただきありがとうございました。 これから色々つかっていきます!

関連するQ&A

  • if () { &error("エラー"); }

    セレクトoptionフォーム、都道府県の選択で 最上部が「選択してください」から始まります。 都道府県を選べばそのまま住所に転記されるのですが 最上部の「選択してください」のままなら 「選択してください」と転記されてしまいます・・・ if (選択してください) { &error("都道府県を選択して下さい!"); } こんな感じのエラーを作りたいのですが何か方法はありますか?

  • perl if文 助けて~

    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("エラー"); }

    • ベストアンサー
    • Perl
  • php セレクトボックス 値取得

    現在phpでフォームを作成しています。 都道府県選択のフォームがあり、データベースに都道府県のマスタが管理されています。 都道府県には北海道&#65374;沖縄まで順番にIDが振られています。 選択フォームはセレクトボックスになります。 ソースは簡単ですが <option value="<?php echo $prefid; ?>"><?php echo $prefname; ?></option> とループさせて下記の状態になります。 <select name="pref"> <option value="1">北海道</option> <option value="2">青森県</option> <option value="13">東京都</option> <option value="20">愛知県</option> <option value="47">沖縄</option> </select> とあり、選択された(例:北海道を選択)のち確認画面では1と表示されます。 これを北海道と表示させたいのですが、どのように作ったらよろしいでしょうか? sessionは使用しています。 $_SESSION['pref'] = $_REQUEST['pref']; で値受け取っています。 おわかりの方がいらっしゃいましたらご教示お願いします。

    • 締切済み
    • PHP

その他の回答 (3)

  • 回答No.3
  • snowize
  • ベストアンサー率27% (68/245)

if ($in{'pre'} eq "" || '0') { …… } これについてちょっと丁寧に説明しますと、インタプリタの解釈としては、 $in{'pre'} は "" か '0' とイコール(eq)か? ではなく、 $in{'pre'} は "" とイコール(eq)もしくは '0' か? という解釈になってしまうんですね。 ちょっとPerlから離れて久しいので「'0'は長さのある文字列と見なされてtrue」となるのか「'0'は数値0と見なされてfalse」となるのかは忘れてしまいましたが、どっちにしろ定数値となってしまうってわけです。 ちょっと詳しい本ならば||や&&の使い方で詳しく説明されていると思うので、もう一度確認しなおすか、もしくは今後の課題としてメモしておくといいと思いますよ。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

意味もわかりました。ありがとうございました。

  • 回答No.2
  • Tacosan
  • ベストアンサー率23% (3656/15482)

あっさり unless ($in{'pre'}) { &error("都道府県の選択!!"); } とか.

共感・感謝の気持ちを伝えよう!

質問者からの補足

OKでしたけど unless は value="" value="0" だけに適用になるって事なのですか? セレクトoptionですけど 空欄が       "" 選択して下さいが "0"  都道府県が    "1"-"47"

  • 回答No.1

未検証 if (($in{'pre'} eq "") || ($in{'pre'} eq '0') ) { &error("都道府県を選択!!"); }

共感・感謝の気持ちを伝えよう!

質問者からのお礼

素早い回答ありがとうございました。

質問者からの補足

できました!!!! ちなみに ""とか''で区切っちゃいましたけど どっちでもいいですか?

関連するQ&A

  • if文について

    if文を利用してリストの表示をしようとしています。 ドロップダウンリストは <SELECT name="type"> <OPTION value="all">指定しない </OPTION> <OPTION value="1">タイプA系列</OPTION> <OPTION value="2">タイプB系列</OPTION> となっています。 データはチェックボックスで1か空白で保存されていて、A系列は「s_1」「s_2」、B系列は「s_3」「s_4」「s_5」にチェックが入っているかどうかを振り分けしたいんです。 なので、ドロップダウンリストで「タイプA系列」を選択したら「s_1」「s_2」に1が入っている物のみ表示するというものです。 現在のところこの形です。 if ($FORM{'type'} ne 'all') { if ($FORM{'type'} eq '1'){ if ($s_7 || $s_8 eq 1) { ; } else { next; } }else{ if ($s_9 || $s_10 || $s_11 eq 1) { ; } else { next; } } } このようにやってみましたが全部表示されてしまいます。 どのように直したらOKでしょうか? お願いします。

    • ベストアンサー
    • Perl
  •  IF文 教えて下さい。

    例 if (($in{'pre'} ne "0") && ($in{'pre'} ne "-1")) { 不要なoptin valueを 0と-1。必要が1-47。 value="1" から value="47" までを真にしたいのですが 例を簡単にするには [1-47] 1< とかどう書けば良いのでしょう?・・・ -------------------------------------------- if ($in{'nam'} && $in{'tel'} && ($in{'pre'} ne "0") && ($in{'pre'} ne "-1") && $in{'add'}) { 今はこんな感じでやってるのです・・・ 全部揃ったら真って感じです。条件文が毎回長くなってw(≧m≦)w

    • ベストアンサー
    • Perl
  • dreamweaver都道府県選択フォーム

    dreamweaverCS6で都道府県を選択するフォーム作りたいですがうまくいきません。 「挿入」メニューから「フォーム」→「フォーム」で入力範囲を作成してその中に「名前」や「メールアドレス」などを「テキストメニュー」で作れますが、「選択(リスト/メニュー)」で都道府県とするとコード欄には次のコードが生成されています。 <label for="pref">都道府県</label> <select name="pref" id="pref"> </select> 上記に都道府県名を記述していくのでしょが、記述しても先頭のフィルドには「北海道」だけしか表示されていず他の県名は表示されていません。よって、選択することができません。 <option value="1">北海道</option> <option value="2">青森県</option> <option value="3">岩手県</option> <option value="4">宮城県</option> <option value="5">秋田県</option> <option value="6">山形県</option> <option value="7">福島県</option>          ・          ・          ・ <option value="47">沖縄県</option> また、47都道府県を入力するのは大変なので、上記をコピーではなく別のメモ帳に下記のように準備してあるのを正規表現というのがあるそうですが一括で変化する方法も併せて教えて戴けると幸いです。 1 北海道 2 青森県 3 岩手県 4 宮城県 5 秋田県 6 山形県 7 福島県    ・    ・    ・ 47 沖縄県

  • セレクトメニューのチェックと条件一致による入力チェック

    (1)メールフォームでセレクトメニューの「都道府県」部分で選択して送信する場合にJAVAで入力チェックエラーを表示させるにはどうしたらよいでしょうか?(東京、千葉、埼玉はOK) Javaサンプルソースを配布しているサイトを教えて下さい。 (2)JAVAによる入力チェックで「YES」にチェックされた場合に、テキストエリアを入力必須にするエラー表示方法を紹介しているサイトを知っていたら教えて下さい。 --------------------------------------------------------------- <form>名前:<input size="20" type="text" name="name"><br> 住所:<select size="1" name="adress"> <option value="東京">東京</option> <option value="千葉">千葉</option> <option value="埼玉">埼玉</option> <option value="都道府県" selected>都道府県</option> </select><input size="20" type="text" name="adress2"><br> (都道府県の場合はエラー表示)<br> <hr> 選択:<input type="radio" name="sentaku" value="yes">YES <input type="radio" name="sentaku" value="No">NO<br> <hr> YESの場合コメント記載<br> <textarea rows="2" cols="20" name="coment"> ----------------------------------------------------------------

  • Javascriptの入力チェック、日本語について

    Javascriptの入力チェックをホームページ内に使いたいのですが、 ●住所(都道府県) ●中学校・高校 のようにnameに「()」や「・」がある文字を設定するとエラーになってしまい入力チェックできません。 ■エラーになる例 if(document.f.住所(都道府県).value=="") { errormsg+="住所(都道府県)を入力してください。\n"; } if(document.f.中学校・高校.value=="") { errormsg+="中学校・高校を入力してください。\n"; } HTMLは以下のようにしています。 <input type="text" name="住所(都道府県)"> <input type="text" name="中学校・高校"> nameに日本語を使う場合、どのようにしたら入力チェックができるのでしょうか。 どうぞよろしくお願い致します。

  • Javascriptの中に外部jsファイルを呼び出したい。

    入力フォームで都道府県などのたくさん項目がある プルダウンメニューやセレクトボックスを外部化し jsの中には document.write('<option value="1">北海道</option>'); document.write('<option value="2">青森</option>'); document.write('<option value="3">岩手</option>'); document.write('<option value="4">宮城</option>'); などとし、ファイル名は「todou.js」としました。 セレクトボックスの外部ファイルは document.write('<option value="1">インターネット</option>'); document.write('<option value="2">テレビ</option>'); document.write('<option value="3">新聞</option>'); などとし、外部ファイルは「kikkake.js」としました。 htmlのところには <tr><td>都道府県:</td> <td><select> <script src="select1.js"type="text/javascript"> </script> などとし、載せることはできました。 しかし、最後に送信ボタンを押した時に 確認するためにアラートで選択したものを出したい時に どうやって呼び出したらよいのでしょうか? 色々調べてみたらまず <script language="JavaScript" src"todou.js"></script> とすると書いてありました。 しかし複数の外部ファイルを呼び出すためにはどうしたら よいのでしょうか? あとアラートで確認するために function Check(){ var myTodou = document.myForm.src"todou.js".value; alert('都道府県:' + myTodou); とするのでしょうか? 不備部分がありましたらご指摘ください。 どうかよろしくお願いします。

  • change イベント

    現在検索フォームを作成しており、セレクトボックスのchengeイベントにわからないとこがあり質問させていただきました。 ソース <select name="pref" id="pref"> <option value="">↓地域を選択してください</option> <option value="1001">北海道</option> <option value="1002">東京都</option> <option value="1003">愛知県</option> <option value="1004">大阪府</option> ・ ・ ・ <option value="1047">沖縄</option> </select> <select name="city" id="city"> <option value="">↓地域を選択してください</option> <option value="2010">札幌</option> <option value="2011">函館</option> <option value="2021">新宿</option> <option value="2022">澁谷</option> <option value="2023">池袋</option> <option value="2031">名古屋</option> <option value="2041">大阪</option> ・ ・ ・ <option value="2051">那覇</option> </select> <script type="text/javascript"> $(function () { $('#pref').change(function(){ var data = $(this).val(); alert(data); }); }); </script> とあったときに 流れとしては #prefで都道府県を選択→#cityでは#prefで選択した都道府県の町のみ表示する。 #prefの選択項目でvalue値を取得することはできたのですが、#cityに反映させることができません。 お分かりの方がいらっしゃいましたら教えていただけないでしょうか。

  • 連動するプルダウンリストの作成

    他にも似たような質問があるのですが、連動するプルダウンリストを作成しています。 二次元配列を使ったものはあるのですが、三次元以上の多次元配列を使ったものがないので質問させて頂きました。 下記のような内容でエリアと都道府県を選択できるプルダウンリストがあります。 これをJavascriptの三次元配列を利用してさらに市町村を選択できるリストを作成したいと思っています。 それぞれのプルダウンリストは、エリアの中でAを選択するとAのエリアの中にある都道府県が選択でき、都道府県を選択するとそれに該当する市町村が選択できるように連動するように作成したいと思っています。 ご指導お願いします。 <html> <head> <script language="javascript"><!-- function hoge(area){ var t=new Array();//optionの項目(text) var v=new Array();//optionのvalue if(area=='A'){ t[0]='A-1';v[0]='A1'; t[1]='A-2';v[1]='A2'; t[2]='A-3';v[2]='A3'; t[3]='A-4';v[3]='A4'; t[4]='A-5';v[4]='A5'; } else if(area=='B'){ t[0]='B-1';v[0]='B1'; t[1]='B-2';v[1]='B2'; } else if(area=='C'){ t[0]='C-1';v[0]='C1'; t[1]='C-2';v[1]='C2'; t[2]='C-3';v[2]='C3'; } else if(area=='D'){ t[0]='D-1';v[0]='D1'; t[1]='D-2 hogehoge';v[0]='D2'; } else{t[0]='都道府県'} var obj=document.frm.s2.options; obj.length=0; for(i=0;i<t.length;i++){ obj[i]=new Option(t[i]); obj[i].value=v[i]; } obj[0].selected=true; if(document.layers){window.resizeBy(-10,-10);window.resizeBy(10,10)} } //--></script> </head> <body> <form name='frm'> <select onChange="hoge(this.options[this.options.selectedIndex].value)"> <option value=''>エリア名</option> <option value='A'>エリアA</option> <option value='B'>エリアB</option> <option value='C'>エリアC</option> <option value='D'>エリアD</option> </select> <select name='s2' size=1 onChange="alert(this.options[this.options.selectedIndex].value)"> <option>都道府県</option> </select> </form> </body> </html>

  • if文がうまく書けない(T.T)

    某CGIを改造してます。 CGIにIDとPassを組み込もうとしているのですが、うまくできません。 いろいろな認証CGIを真似してやっているのですが… sub pass2{ open (FILE,"$passdata"); @file = <FILE>; close FILE; foreach (@file) { local($nm,$ps)= split(/,/,$_); if ($nm eq $in{'name'} && crypt($in{'password'},$ps) eq "$ps") { &admin; exit; } } &error("認証に失敗しました?"); } この状態だと動くことは動くのですが、ちょっと面倒なので逆転させたいんです。 そこで以下のように作り変えてみました。 if ($nm ne $in{'name'}) { &error("名前が違います"); exit; } if ($nm eq $in{'name'} && crypt($in{'password'},$ps) ne "$ps") { &error("パスワードが違います。"); exit; } } &admin } こうすると、なぜか正しい名前を入れても「名前が違います」のメッセージが出ます。 いったいどこが間違っているのですか? 言語はperlです。 お願いします。

    • ベストアンサー
    • CGI
  • phpでの住所の処理について

    初めまして。 まだまだphpを初めて間もないのですが、勉強がてらphpで登録内容の変更フォームを作っています。 ただ、どうしても住所関連の部分で上手く処理が出来ずに悩んでいまして、 よろしければお知恵を拝借できないでしょうか? ↓ココから実際のコード----------------------------------------------------------------- <select name="usaddress" id="usaddress" > <option value="">お住まいの都道府県を選択してください</option> <? for ($i=01;$i<53;$i++) { if(substr($i + 100 , 1 , 2) == $usaddress){ echo '<option value="' . substr($i + 100 , 1 , 2) . '" selected="selected">' . $selectprefecture_set[substr($i + 100 , 1 , 2)] . '</option>' . "\n"; }else{ echo '<option value="' . substr($i + 100 , 1 , 2) . '">' . $selectprefecture_set[substr($i + 100 , 1 , 2)] . '</option>' . "\n"; } } ?> </select> ↑ココまで実際のコード----------------------------------------------------------------- $usaddressには登録者の都道府県コードが入っています。 DBから呼び出して当該ユーザーの都道府県コードが入ってきます。 $selectprefecture_setには、連想配列で都道府県名を突っ込んでいます。 コレを登録内容の変更フォームに組み込むと、 セレクトボックスの中身は表示されるんですが、 DBから取ってきた値がデフォルト値で表示されないのです・・・。 DBからはキチンと値を持ってきているのは確認できていますし、 正直どこが悪いのかすらわかっていません・・・。 宜しくお願い致します。

    • 締切済み
    • PHP