• ベストアンサー

演算子について教えてください。

お世話になります。 itemが"えんぴつ"と"ボールペン"どちらかが、送られてきてgoodsが"なし"場合には1000円を表示するスクリプトを書いたのですが、1.phpで何も表示されません。(選択してくださいは表示されます)if文で1つずつ処理することが面倒なので、下記のようにしたいのですがどのようにすればよいのでしょうか?ご教授ください。よろしくお願いいたします。 <form name="form1" method="post" action="1.php"> <input type="radio" name="item" value="なし" checked>なし <input type="radio" name="item" value="えんぴつ" >えんぴつ <input type="radio" name="item" value="ボールペン">ボールペン <input type="radio" name="goods" value="なし" checked>なし <input type="radio" name="goods" value="電卓">電卓 <input type="radio" name="goods" value="ボールペン">本 <input type="submit" name="Submit" value="送信"> </form> ------------------------------------------------- 01.php <?php if($item=="0" && $goods=="0" ){ print "選択してください。"; } elseif(($item=="えんぴつ" or $item=="ボールペン") && $goods=="0"){ print "1000円"; }

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

  • ベストアンサー
  • kalze
  • ベストアンサー率47% (522/1092)
回答No.3

#1様のご指摘通りだとおもいますが、補足として。 PHPの設定ファイル(php.ini)が見られる環境であれば、register_globalsという変数がどのように定義されているか確認してみてください。 register_globals = onであれば、フォームなどで送信されてきた値は、その名前と同じ変数に自動的にセットされます。 name="item" value="なし"であれば、自動的に$itemが定義されそのvalueがセットされている。 バージョンいくつかからは忘れてしまいましたが、register_globalsはセキュリティの観点から、デフォルトではoffに設定されるようになりました。 つまり送信されてきたデータはなんらかの方法で、明示的に変数を定義し、それに値をセットしなくてはなりません。 その方法のひとつは、#1様がご教示されている$_POST["item"]です。 print "選択してください"; が実行されている点から、register_globals=offと設定されているため、01.phpにおいては、$itemや$goodsといったものは送られてきたデータとはまったく関係のない変数として定義されているのでしょう。 しかし、値をセットしていないので、if文に引っかかっているのだとおもわれます。 <?php $item = $_POST["item"]; $goods = $_POST["goods"]; if($item=="0" && $goods=="0" ){ print "選択してください。"; } elseif(($item=="えんぴつ" or $item=="ボールペン") && $goods=="0"){ print "1000円"; } ?> として、送信されてきたデータを受け取ってやれば大丈夫だとおもいます。 なにか参考にされた書籍やサイトがあるのでしょうか。 そちらにregister_globalsについて記述されていなければ、それが書かれたときのPHPのバージョンが古いか、不親切なものかもしれません。 詳しくは「register_globals PHP」などで検索すれば詳しく書かれたサイトなど解説文書が簡単に見つかるかとおもいます。

Autosound
質問者

お礼

ご回答ありがとうございます。当方のレンタルサーバーの使用環境がregister_globals="on"な為$_POST['item']が不必要です。本日、もう一度同じスクリプトで試してみたのですが、動作確認できました。不思議です....。時間によって左右されのでしょうか?ご回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

<input type="radio" name="goods" value="なし" checked>なし つまり、なしのvalueが"なし"ですから、$goods=="なし"にならないといけないんじゃないですか? こういう場合はif文の前で変数の値(この場合は$goods)の値をprint文で表示して、意図どおりの値が入っているかどうか確認すると良いです。

Autosound
質問者

お礼

ご回答ありがとうございます。$goods=="なし"ですが、UPした瞬間に気づいたのですが、訂正が出来なかったのもので申し訳ございません。

全文を見る
すると、全ての回答が全文表示されます。
  • SE_goma
  • ベストアンサー率22% (29/131)
回答No.1

"or"って書いてもいいんですね。 初めて知りました。 でもandを&&で書くならorも||にした方がいいのでは? あと、postで送られた変数は$_POST['item']と書かないと 値が取り出せなかったと思うのですが・・・ if($item=="0" && $goods=="0" ){ print "選択してください。"; } の$itemと$goodsは前のファイルのitemとgoodsではなく、 新しく登場したワーク変数だと解釈されているのではないでしょうか?

Autosound
質問者

お礼

ご回答ありがとうございます。"or"や"&&"また、"||"や"and"も事前に使用したのですが、動作しませんでした。また、レンタルサーバーの使用環境がregister_globals="on"な為$_POST['item']が不必要です。本日、もう一度同じスクリプトで試してみたのですが、動作確認できました。不思議です....。時間によって左右されのでしょうか?ご回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PHPでの検索

    初心者です。 ネットもさがしてみたのですが下記の意味がイマイアチわかりません。 <form name="form2" action="search.php" method="post"> <input type="text" name="keyword" size="25" value="<?= $keyword ?>"> <input type="submit" name="search" value="検索"><br /> <input type="radio" checked name="searchSelect" value="AND">AND  <input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect" value="OR">OR </form> (1)<form name="form2" action="search.php" method="post"> 検索ボタンを押すと「action="search.php"」が起動します。  どういう仕組みなのでしょうか。 (2) <input type="text" name="keyword" size="25" value="<?= $keyword ?>">  作者の説明で、  『前の画面でテキストボックスに入力した値を、デフォルトで表示しています。  <input type="text" name="keyword" size="25" value="<?= $keyword ?>">』  となっていますが、value="<?= $keyword ?>"でなぜそうなるのでしょうか。  また、<?= $keyword ?>の<?= ?>構文はどのような機能があるのでしょうか。 (3)<input type="radio" checked name="searchSelect" value="AND">AND  「value="AND">AND」の右側の「AND]はどういう意味でしょうか。 (4)<input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect" value="OR">OR  作者の説明で、  『(6)前の画面でORラジオボタンが選択されていた場合は、選択(checked)します。  <input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect"  value="OR">OR』  とありますが、<?= ($searchSelect == "OR")? "checked" : "" ?>でなぜそういうことができているのでしょうか。  また、『"checked" : 』の『:』は何の役目をしているのでしょうか。 上記4つの質問でどれでもいいですのでどなたかお教え願えないでしょうか。

    • 締切済み
    • PHP
  • 選択された値をセッションで保存したい

    ラジオボタンで選択された値をセッションで保存し、DBまで持って行きたいのですが、どのようにすればよいでしょうか?なお、ラジオボタンからはPOSTで渡しています。どなたかわかる方ご教授お願いします。流れは【a.php => b.php => c.php => d.php => DB】c.phpにラジオボタンがあります。 [c.php]はこのような感じです。 <form name="form1" method="post" action="d.php"> <input type="radio" name="color" value="なし" >なし <input type="radio" name="color" value="赤">赤 <input type="radio" name="color" value="青">青 <input type="submit" name="Submit" value="送信">

    • ベストアンサー
    • PHP
  • 検索時の選択内容を保持する方法 2

    昨日こちらのURL『http://okwave.jp/qa/q6477112.html』にて質問させていただきました。 ご回答を締め切らせていただいたため、誠に勝手ながら新たに質問の方させていただきました。 PHP検索フォーム、検索時の選択内容を保持する方法にて、先日ご回答いただいた 下記のコードを基本として利用しているのですが、 <? //checkbox if($_REQUEST["test_a"]=="1") $checked["test_a"]=" checked"; if($_REQUEST["test_b"]=="1") $checked["test_b"]=" checked"; //radio if(isset($_REQUEST["test_c"])) $checked["test_c"][$_REQUEST["test_c"]]=" checked"; //select if(isset($_REQUEST["test_d"])) $selected["test_d"][$_REQUEST["test_d"]]=" selected"; print <<<eof <form> <input type="checkbox" name="test_a" value="1"{$checked["test_a"]}>A <input type="checkbox" name="test_b" value="1"{$checked["test_b"]}>B <input type="radio" name="test_c" value="1"{$checked["test_c"][1]}>C-1 <input type="radio" name="test_c" value="2"{$checked["test_c"][2]}>C-2 <input type="radio" name="test_c" value="3"{$checked["test_c"][3]}>C-3 <select name="test_d"> <option value="">---</option> <option value="1"{$selected["test_d"][1]}>D-1</option> <option value="2"{$selected["test_d"][2]}>D-2</option> <option value="3"{$selected["test_d"][3]}>D-3</option> </select> <input type="submit" value="go"> </form> eof; ?> 複数選択のチェックボックスがある場合の方法をご存じの方いらっしゃいましたら、 是非ともご教授お願い致します。 複数チェックボックスは、 <input type="checkbox" name="bungu[0]" value="鉛筆" >鉛筆 <input type="checkbox" name="bungu[1]" value="定規" >定規 <input type="checkbox" name="bungu[2]" value="色鉛筆" >色鉛筆 <input type="checkbox" name="bungu[3]" value="ペン" >ペン <input type="checkbox" name="bungu[4]" value="絵具" >絵具 <input type="checkbox" name="bungu[5]" value="ハサミ" >ハサミ <input type="checkbox" name="bungu[6]" value="ボールペン" >ボールペン というようなものを利用しています。

    • ベストアンサー
    • PHP
  • Firefoxのdisabledプロパティのバグ?

    複数のラジオボックスがあり、すべてのラジオボタンで 「YES」がチェックされた時にだけ、submitボタンが 有効になるようJavaScriptで制御できればと思ってます。 素人ながら以下のようなJavascriptにしたところ、 IEやSafari、Chromeでは意図した通り動作しましたが、 ただFirefoxのみボタンがdisabledになったまま有効になりませんでした。 解決策がわかる方がいらっしゃればご教授お願いできればと思います。 よろしくお願い致します。 <script type="text/javascript"> <!-- function check() { if (form1.radio1[0].checked && form1.radio2[0].checked && form1.radio3[0].checked) { form1.send.disabled = false; } else { form1.send.disabled = true; } } ; //--> </script> <form name="form1"> <input type="radio" name="radio1" value="1" >YES <input type="radio" name="radio1" value="2">NO <input type="radio" name="radio2" value="1">YES <input type="radio" name="radio2" value="2">NO <input type="radio" name="radio3" value="1" onClick="check()">YES <input type="radio" name="radio3" value="2">NO <input type="button" name="send" value="GO" onclick="location.href='hogehoge.html'" disabled="disabled"> </form>

  • 選択したたラジオボタンの値をSUBMITボタンに

    選択したたラジオボタンの値をSUBMITボタンの名前として自動的に替えたいのですが、助言をいただけますか。 イメージは下記です。★の部分に、クリックごとにradioの値を入れたいのです。 <script Language="JavaScript"><!-- function set() { n = document.myFORM.Radio.value; } // --> </script> <FORM ACTION="add.cgi" METHOD="POST" name="myFORM"> <INPUT TYPE="RADIO" NAME="Radio" VALUE="東京" onclick="set()" CHECKED> <INPUT TYPE="RADIO" NAME="Radio" VALUE="大阪"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="★"></form>

  • アンケートフォームの作り方

    アンケートフォームを作りたいのですが、以下のプログラムにおいてのoutput.php の作り方がわかりません。最終的には、アンケート結果を出力(最後の質問の見る回数に関しては、これまでの平均をだす)をしたいとおもっています。http://www.standpower.com/php_form.htmlを参考にしてつくってみたもののうまくいきません。というのも、そのページに書かれている質問は1つしかないので、今回のように3つ質問があるとどうすればいいのかわからないからです。どなたか教えていただけないでしょうか? <html> <body> <b>あなたの年齢を教えてください</b> <form method = "post" action = "output.php"><br> <input type = "radio" name = "toshi" value = "1" checked>10代<br> <input type = "radio" name = "toshi" value = "2" >20代<br> <input type = "radio" name = "toshi" value = "3" >30代<br> <input type = "radio" name = "toshi" value = "4" >40代<br> <input type = "radio" name = "toshi" value = "5" >50代<br> <input type = "radio" name = "toshi" value = "6" >60代<br> <input type = "radio" name = "toshi" value = "7" >70歳以上<br><br> <b>お昼によくみる番組は?</b><br> <input type = "radio" name = "type" value = "8" checked>ピンポ<br> <input type = "radio" name = "type" value = "9" >スクランブル<br> <input type = "radio" name = "type" value = "10" >笑っていいとも<br> <input type = "radio" name = "type" value = "11" >おもいっきりいいTV<br><br> <b>週に何回見ますか?</b><br> <input type = "text", name = "test_about_other" maxlength="100"><br><br> <INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="やり直し"<BR><BR> </form> </body> </html>

    • ベストアンサー
    • PHP
  • なぜエラー?

    いつもコピペでjavascriptを活用しています。 (^^; 下記の2個のRADIOボタンのうち1個を削除するとエラーになります。なぜ? <script Language="JavaScript"> <!-- function set( n ) { document.main.Submit.value = document.main.shori[n].value; } // --> </script> <FORM name="main"> <INPUT TYPE="RADIO" NAME="shori" VALUE="修正" onClick="set(0);" CHECKED> 修正 <INPUT TYPE="RADIO" NAME="shori" VALUE="複写" onClick="set(1);"> 複写 <INPUT TYPE="SUBMIT" NAME="Submit" > </FORM>

  • 他フォームの入力データの引継ぎ

    入力フォームを2つ用意し 第1フォームの入力欄の1部を第2フォームの入力欄のデータとして submitさせたいのですが <INPUT TYPE="radio">と<SELECT>の入力値がうまく引継げません。 下記のようなJavaスクリプトとHTMLなのですが Javaスクリプトで「value」を=にすると 「radio」のほうはundefin、 「SELECT」で複数選択した場合は、一つ目の選択肢のみしか 引継げませんでした。 Javaスクリプトでうまくいく方法がありましたら ご教示ください。 ----Javaスクリプト-------------------------------- function aaa() { document.FROM2.A.value = document.FROM1.A.value; document.FROM2.B.value = document.FROM1.B.value; document.FROM2.C.value = document.FROM1.C.value; document.FROM2.submit(); } ----HTML-------------------------------- <FORM NAME="FROM1" METHOD="POST" ACTION="***"> <SELECT NAME="A" MULTIPLE> <OPTION VALUE="aa">セレクトa <OPTION VALUE="bb">セレクトb <OPTION VALUE="cc">セレクトc <OPTION VALUE="dd">セレクトd </SELECT> <INPUT TYPE="radio" NAME="B" VALUE="" CHECKED>選択なし <INPUT TYPE="radio" NAME="B" VALUE="1" CHECKED>ラジオ1 <INPUT TYPE="radio" NAME="B" VALUE="2" CHECKED>ラジオ2 <INPUT TYPE="text" NAME="C"> <INPUT TYPE="text" NAME="D"> <INPUT TYPE="submit" NAME="OK_BTN" VALUE="OK"> </FORM> <FORM NAME="FROM2" METHOD="POST" ACTION="***"> <INPUT TYPE="hidden" NAME="A"> <INPUT TYPE="hidden" NAME="B"> <INPUT TYPE="hidden" NAME="C"> <INPUT type="button" onClick="JavaScript:aaa();" name="OK_BTN" value="OK"> </FORM>

  • 一つのformで、複数のaction指定

    レイアウトなどの関係で、formの配置が基本とは異なるものになってしまい、うまく動作させる方法が見つからず困っています。 現在は <form> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> </form> …… <form method="POST" action="A.php"> <input type="submit" name="aa" value="あああ"> </form> <form method="POST" action="B.php"> <input type="submit" name="bb" value="いいい"> </form> <form method="POST" action="C.php"> <input type="submit" name="cc" value="ううう"> </form> <form method="POST" action="D.php"> <input type="submit" name="dd" value="えええ"> </form> のようになっていて、チェックボックスの値を送信したいのは、Dのボタンを押したときだけPOSTされるようにしたい状態です。 この値を取得する方法か、もしくは <form method="POST" action="(ボタンに応じたもの)"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> …… <input type="submit" name="aa" value="あああ"> <input type="submit" name="bb" value="いいい"> <input type="submit" name="cc" value="ううう"> <input type="submit" name="dd" value="えええ"> </form> このように、一つのフォームの中に埋めてしまい、actionに入る値をボタンによって分ける方法はありませんでしょうか? もしくは他の方法でも構いません。 お分かりの方がいましたら、是非ご教授お願いいたします。

    • 締切済み
    • PHP
  • ボタン別でフォームの送信先を変えたい

    同じ場所に3つある今のフォームを1つにまとめたいのですが、 「ラジオボタン」でやるのではなく「submitボタン」によって送信先の振り分けはできないのでしょうか? CGIなどを使って一旦クッションを置くのは問題ないです。何か参考になるサイトさんとかありましたら教えてください。 <form action="1.php" method="get" class="form" target="a" name="1"> <input type="hidden" name="s" value=90 /> <input type="hidden" name="t" value="e" /> <input type="text" name="moji" value="" size="8" /> <input type="submit" name="button" value="検索" /> </form> <form action="http://e.php" method="get" name="2" target="a"> <input type="hidden" name="test" value=et /> <input type="text" name="77" value="" size="8" /> <input type="submit" value="検索2" class="button" /> </form> <form action="http://8.cgi" method="get" target="a"> <input type="text" size="8" name="q" value="" /> <input type="submit" value="検索3" class="button" /> <input type="hidden" name="sut" value="JJ" /> </form>

    • ベストアンサー
    • CGI
Airprintで印刷できない
このQ&Aのポイント
  • ipadから印刷したいのですがうまくいきません。
  • プリンタの設定や操作手順を試しましたが、問題は解決しません。
  • キヤノン製品に関する質問です。
回答を見る

専門家に質問してみよう