![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
お世話になります。
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円";
}
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」などで検索すれば詳しく書かれたサイトなど解説文書が簡単に見つかるかとおもいます。
ご回答ありがとうございます。当方のレンタルサーバーの使用環境がregister_globals="on"な為$_POST['item']が不必要です。本日、もう一度同じスクリプトで試してみたのですが、動作確認できました。不思議です....。時間によって左右されのでしょうか?ご回答ありがとうございました。
No.2
- 回答日時:
<input type="radio" name="goods" value="なし" checked>なし
つまり、なしのvalueが"なし"ですから、$goods=="なし"にならないといけないんじゃないですか?
こういう場合はif文の前で変数の値(この場合は$goods)の値をprint文で表示して、意図どおりの値が入っているかどうか確認すると良いです。
ご回答ありがとうございます。$goods=="なし"ですが、UPした瞬間に気づいたのですが、訂正が出来なかったのもので申し訳ございません。
No.1
- 回答日時:
"or"って書いてもいいんですね。
初めて知りました。
でもandを&&で書くならorも||にした方がいいのでは?
あと、postで送られた変数は$_POST['item']と書かないと
値が取り出せなかったと思うのですが・・・
if($item=="0" && $goods=="0" ){
print "選択してください。";
}
の$itemと$goodsは前のファイルのitemとgoodsではなく、
新しく登場したワーク変数だと解釈されているのではないでしょうか?
ご回答ありがとうございます。"or"や"&&"また、"||"や"and"も事前に使用したのですが、動作しませんでした。また、レンタルサーバーの使用環境がregister_globals="on"な為$_POST['item']が不必要です。本日、もう一度同じスクリプトで試してみたのですが、動作確認できました。不思議です....。時間によって左右されのでしょうか?ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<input type="hidden" >で配列...
-
HTMLで前の画面に戻る時、入力...
-
ラジオボタンのチェックを判定...
-
テキストボックスに初期値を入れる
-
PHPでMP3サーバを作るには
-
検索時の選択内容を保持する方法
-
PHPを勉強中の専門学生です。 ...
-
ラジオボタンの値によって他の...
-
PHP ボタンが押されたら処理を...
-
1つのphpファイルで、入力フォ...
-
PHPのページ間による配列の受け...
-
テキストボックにカーソルを合...
-
php + javascriptで値の保持
-
PHP DBの登録情報をラジオボタ...
-
テキストボックスとsubmitボタ...
-
チェックボックスのvalueを連結...
-
PHPのmysqlに格納したデータの...
-
フォーム INPUTの文字化け対策...
-
フォームボタンを押すたびに数...
-
php、HTML5に詳しいかた。H...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
<input type="hidden" >で配列...
-
PHP ボタンが押されたら処理を...
-
検索時の選択内容を保持する方法
-
DBの値をチェックボックスに反...
-
ラジオボタンをsessionで使いたい
-
パラメーターを隠す
-
PHPで画像の渡しが上手く行きま...
-
フォームへの前回入力値をクリ...
-
フォームボタンを押すたびに数...
-
フォームでのリセットを使う方法
-
syntax error, unexpected '}' ...
-
PHPの関数実行
-
phpで分からないエラーが出てし...
-
テキストボックスに初期値を入れる
-
入力した部分を表示させたまま...
-
入力フォーム→確認画面→送信画...
-
Javascript→PHPに...
-
画面が更新されてもチェックボ...
-
配列をhiddenで
おすすめ情報