• ベストアンサー

特殊な連想配列について

どなたか教えてください。 $_REQUESTを使用した部分に警告が出て正しく表示されません。 参考にしたサンプルソースの説明書にはPHP5.2.6と書いてあったのですが、 私の環境は5.3ですのでそれが起因しているような気がするのですが、ググっても 全くわかりません。 if($_REQUEST(["xxx"]) != "" ) のような記述部分が全て Notice: Undefined index: xxx in C:\xampp\htdocs\abcde\test.php on line 49 のようになります。 よろしくお願いいたします。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>isset($_REQUEST["address1"]) == "奈良県" issetの使い方が私の例示とちがいますね・・・ 今回のケースであればこんな感じでよいかと <?PHP error_reporting(E_ALL ^ E_NOTICE); $selected["address1"][$_REQUEST["address1"]]=" selected"; ?> <form> <p> エリア:<br> <select name="address1"> <option value="">全て</option> <option value="大阪府"<?php print $selected["address1"]["大阪府"]; ?>>大阪府</option> <option value="京都府"<?php print $selected["address1"]["京府都"]; ?>>京府都</option> <option value="兵庫県"<?php print $selected["address1"]["兵庫県"]; ?>>兵庫県</option> <option value="奈良県"<?php print $selected["address1"]["奈良県"]; ?>>奈良県</option> </select> <input type="submit" name="submit" value="絞込検索"> </p> </form>

taizomaru
質問者

お礼

ありがとうございます! issetの件は申し訳ありません、試行錯誤している状態の消し忘れでした・・・。 頂いたソースでやってみましたところ、京都府で検索した場合だけプルダウンが「全て」に変わってしまいます。 すごくすっきりとした構文にしていただき本当に感謝しております。 学習を深めさせていただきます。

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

その他の回答 (3)

回答No.4

PHPにおいて文字列比較に「==」を使ってはいけません。 「===」もしくはstrcmp()関数を使いましょう。

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>京都府で検索した場合だけプルダウンが「全て」に ああ・・・ごめんなさい、質問者さんのコードを流用したからですね 「京都府」と書くべきところを「京府都」と書いてある箇所があります。 すべて「京都府」に統一すればいいでしょう

taizomaru
質問者

お礼

こちらこそスペルミスで申し訳ございませんでした・・・。 とても助かりました、がんばって勉強しだいと思います。

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

まずは、質問記述が間違えています。 >if($_REQUEST(["xxx"]) != "" ) if($_REQUEST["xxx"] != "" ) ですね・・・上記のものだとそもそもが文法エラー そのうえで、今回の件はerror_reportingの問題だと思います。 たぶん今の環境でphp.iniがタイトな設定になっているのかと。 対処方法としては・・・ <?PHP error_reporting(E_ALL ^ E_NOTICE); if($_REQUEST["xxx"] != "" ) print $_REQUEST["xxx"]; ?> と、E_NOTICEを除いてやれば設定していないキーの値をとってもエラーはでません。 ちゃんとやるなら <?PHP error_reporting(-1); if(isset($_REQUEST["xxx"]) and $_REQUEST["xxx"] != "" ) print $_REQUEST["xxx"]; ?> のように、存在確認をしてから比較をすることになります

参考URL:
http://www.php.net/manual/ja/function.error-reporting.php
taizomaru
質問者

補足

質問の際にコピペを誤りました・・・、ご指摘ありがとうございます。 教えて頂いた方法でうまくいきました! ただ1点、下記のようなデータべースからセレクト項目で出力させる物を作っているのですが、検索実行をすると最終的な表示が奈良県になってしまいます・・・。 選んだ項目をそのまま残したいのですが、合わせて教えて頂けないでしょうか。 よろしくお願いいたします。 <form name="search_form" action="search2.php" method="POST"> <p> エリア:<br> <select name="address1"> <option value="">全て</option> <option <?php error_reporting(E_ALL ^ E_NOTICE); if($_REQUEST["address1"] == "大阪府" ){ print( "selected" ); } ?> value="大阪府">大阪府</option> <option <?php error_reporting(E_ALL ^ E_NOTICE); if($_REQUEST["address1"] == "京府都" ){ print( "selected" ); } ?> value="京都府">京府都</option> <option <?php error_reporting(E_ALL ^ E_NOTICE); if($_REQUEST["address1"] == "兵庫県" ){ print( "selected" ); } ?> value="兵庫県">兵庫県</option> <option <?php error_reporting(E_ALL ^ E_NOTICE); if(isset($_REQUEST["address1"]) == "奈良県" ){ print( "selected" ); } ?> value="奈良県">奈良県</option> </select> </p> <input type="submit" name="submit" value="絞込検索"> </p> </form>

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

関連するQ&A

  • エラーログの意味と対処方法を教えてください

    http://www.mt312.com/のフリースクリプトの携帯対応掲示板 REP-BBSでエラーログが大量に放出されました。 その一部を書きます。 PHP Notice: Undefined index: HEAD in xxx/model.php on line 158 PHP Notice: Undefined index: page in xxx/model.php on line 793 PHP Notice: Undefined variable: nStart in xxx/model.php on line 1088 PHP Notice: Undefined index: mode in xxx/model.php on line 547 PHP Notice: Undefined index: mode in xxx/index.php on line 15 PHP Notice: Undefined index: page in xxx/model.php on line 480 まだまだあります。 サーバーから数十ギガバイトのエラーログがあると指摘されました。 どれかひとつでもいいです。対処方法教えてください。

    • 締切済み
    • PHP
  • JavascirptかPHPでコメントフォーム

    http://qitailang.small.jp/webtech/commentbox/commentform.html このサイトのコメントフォームを使おうと思っているのですが 行き詰っています。 アパッチのhtdocsの直下にフォルダを置き、 フォルダ名をcommentform_modifiedとしてその下にsample.htmlを置き さらにその下に commentform commentform.php commentform.js commentform.css commentfiles としました。今の所パーミッションというのは触っていません。 元々このサイトとは違う練習用のPHPファイルはうまくいっています。ただ今回、 http://localhost/commentform_modified/sample.htmlとして実行した所PHPのエラーが出ています。 Notice: Use of undefined constant file - assumed 'file' in C:\Program Files\Apache\Apache24\htdocs\commentform_modified\commentform\commentform.php on line 17 Notice: Use of undefined constant cmd - assumed 'cmd' in C:\Program Files\Apache\Apache24\htdocs\commentform_modified\commentform\commentform.php on line 21 Notice: Undefined index: cmd in C:\Program Files\Apache\Apache24\htdocs\commentform_modified\commentform\commentform.php on line 21 Notice: Use of undefined constant cmd - assumed 'cmd' in C:\Program Files\Apache\Apache24\htdocs\commentform_modified\commentform\commentform.php on line 57 Notice: Undefined index: cmd in C:\Program Files\Apache\Apache24\htdocs\commentform_modified\commentform\commentform.php on line 57 まず17行目から21行目辺りですが $commentdir = 'http://localhost/commentform_modified/commentform'; /*--------------------------------------------*/ $Comment = array(); if (!is_dir($commentdir)) mkdir($commentdir); if ($_REQUEST[file] && is_file("$commentdir/$_REQUEST[file].dat")) { $a=1; $Comment = file("$commentdir/$_REQUEST[file].dat"); } if ($_REQUEST[cmd] == 'commentRegist') { としています。 57行目は } elseif ($_REQUEST[cmd] == 'delete') { となっています。 双方とも何がいけないんでしょうか?

    • ベストアンサー
    • PHP
  • phpについについて質問3

    テキストボックスの内容を送信する事は成功しました。 しかし複数のテキストボックスはできませんでした。 <h1>PHPのテストです</h1> <form action="9.php" method="POST"> <p><input type="text" size="20px" name="ad1"></p> <p><input type="text" size="20px" name="ad2"></p> <p><input type="submit" value="送信"></p> <?php print"ようこそ"; print$_POST["ad1"]; print$_POST["ad2"]; print"様"; ?> </form> これは間違いでしょうか? エラーもでてました Notice: Undefined index: ad1 in C:\xampp\htdocs\6.php on line 37 Notice: Undefined index: ad2 in C:\xampp\htdocs\6.php on line 38 様 とでてます すいません いつもいつも 入力された内容を受け取るという作業ができれば なんとなく一応目標達成だとおもいます

    • ベストアンサー
    • PHP
  • XAMPPの設定

    XAMPPを使ってPHPの勉強をしております。 フォーム入力から値を受けるという練習をしており キャッシュやセッションがまだセットされていない 一番最初の状態(だと思うのですが…)だと 変数に何も入っていないので読み取れないというようなエラー表示がでます。 「Notice: Undefined index: name in C:\xampp\htdocs\test\in.php on line 6」 一度でもフォームを入力した以降はこのエラー表示は出ないのですが 最初からこのエラーがでないようにするには どこのどのファイルをどのように設定すればよいのでしょうか? ちなみにレンタルサーバーではすでに設定がしてあるのか 最初からエラーは表示されません。 よろしくお願いいたいます。

    • ベストアンサー
    • PHP
  • エラーの原因がわかりません

    こんにちは。 phpの学習目的でXAMPPをインストールしたのですが以下のようなエラーが出ます。 Parse error: parse error in C:\xampplite\htdocs\sample.php on line 4 この意味がよくわからずにいます(on line 4 ??) apacheの設定が済んでいないのでしょうか? http://localhost/ を入力すると正常に /xampp/index.php/に飛び、.phpを読み込んでいます。 何がいけないのでしょうか? ご教授下さい。お願いします。

    • 締切済み
    • PHP
  • Wordpress初心者です

    wordpress初心者です。 wordpressを勉強しようとしていて、最初でつまづいてしまいました。 XAMPPを導入して、htdocs/wordpress/wp-content/themes/twentythirteen/index.php をhttp://localohst/wordpress/wp-content/themes/twentythirteen/index.php で表示させようとしたら、 Fatal error: Call to undefined function get_header() in C:\xampp\htdocs¥wordpress\wp-content\themes\twentythirteen\index.php on line 17 とエラーが出てしまって表示できません。何が原因でどのように対処すればよいのでしょうか? よろしくお願いします。

    • 締切済み
    • CSS
  • Pleiades のXamppのセキュリティー

    Pleiades All in One 3.7.1.v20110924[PHP (JRE あり)]でPHPの勉強を始めました。 Xampp Control Panel からApacheとMySqlは起動してくれます。 http://localhostからXAMPPようこそ画面 左カラム「セキュリティ」をクリックすると セキュリティ画面が画像のようになっています。 普通なら右のステース枠外の下方に MySQLユーザルートのパスワードの設定リンクがあると思うのですが。 Xamppの設定は、どこも触っていません。 左側のエラーのところ一番上が 「Notice:Undefined index:navi-german in C:\pleiades-e3.7-php-jre_20110924\xampp\security\htdocs\navi.php line42 」と書かれていて、各言語のリンクになっているみたいです。 navi.phpファイルも覗いてみましたが、何が悪いか分かりませんでした。 少し難しい質問になりましたが、解決法方をご教示頂けないでしょうか? ネットで調べても、よく分からない回答しかなかったので・・・。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPで$_ENVを使うと警告が出る

    《環境》 Windows 7 SP1 XAMPP 5.6.3.0 Apache 2.4.10 MySQL 5.6.2 PHP 5.6.3 phpAdmin 4.2.11 稼働環境がWindowsかどうかを確認するために if (preg_match("/Windows/", $_ENV["OS"])) というif文を入れると、実行時に Notice: Undefined index: OS in C:\localhost\form.php on line nn という警告が出ます。処理は実行しているようですが気になります。 何が悪いのでしょうか? 環境でメッセージの表示をOFFにしてしまえば消えるとは思いますが、警告を残しておくのは気色悪いので消したいと思います。 よろしくお願いします

    • ベストアンサー
    • PHP
  • 配列のデータを受け取る、のバグ

    PHPスーパーサンプル第2版の2-3/rcvarray.phpからの抜粋です。 <html> <head> <title>配列のデータを受け取る</title> </head> <body> <?php <?php $array = array("menu"=>"カレー", "price"=>"380", "date"=>"2005/01/01"); echo "配列の内容(エンコードした場合)"; print_r(unserialize(base64_decode($_POST["ar_enc"]))); echo "<p>配列の内容(そのまま渡すと失敗)"; print_r($_POST["ar"]); ?> <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> <input type="submit" value="送信" name="sub1"> <input type="hidden" name="ar" value="<?php echo $array ?>"> <input type="hidden" name="ar_enc" value="<?php echo base64_encode(serialize($array)) ?>"> </form> </body> </html> を実行すると、 配列の内容(エンコードした場合): Notice: Undefined index: ar_enc in /UNIONFS/opt/lampp/htdocs/samples/chapter2/2-3/rcvarray.php on line 14 配列の内容(そのまま渡すと失敗): Notice: Undefined index: ar in /UNIONFS/opt/lampp/htdocs/samples/chapter2/2-3/rcvarray.php on line 16 というエラーが出るんですが、どうやって直せばいいのですか? 正しくは、上には配列の内容が表示され、下にはarrayとだけ表示されるようです。 $arrayの直後に     $ar_enc = "";     $ar = ""; と挿入してみましたがダメでした。 @でエラーを抑制するのはなしでお願いします。

    • ベストアンサー
    • PHP
  • Pleiades のXamppのセキュリティー

    Pleiades All in One 3.7.1.v20110924[PHP (JRE あり)]でPHPの勉強を始めました。 Xampp Control Panel からApacheとMySqlは起動してくれます。 http://localhostからXAMPPようこそ画面 左カラム「セキュリティ」をクリックすると セキュリティ画面が画像のようになっています。 普通なら右のステース枠外の下方に MySQLユーザルートのパスワードの設定リンクがあると思うのですが。 Xamppの設定は、どこも触っていません。 左側のエラーのところ一番上が 「Notice:Undefined index:navi-german in C:\pleiades-e3.7-php-jre_20110924\xampp\security\htdocs\navi.php line42 」と書かれていて、各言語のリンクになっているみたいです。 navi.phpファイルも覗いてみましたが、何が悪いか分かりませんでした。 対象法の分かる方、ご伝授お願いします(⌒ ⌒)(_ _)ぺこ。 パソコン環境:XP-Pro sp3

    • 締切済み
    • PHP