NeGiMeMo.net

ねぎさんのメモ帳。日常・メモ・ときどきWordPress。

Notice: Undefined index と言われたら

bell賞味期限切れコンテンツ

この記事は公開または最終更新から900日くらい経過しています。
このメッセージが表示されている記事(特にプログラミング系)は情報が古くなっている可能性があるので注意して下さい。

WordPressで独自のオプションページとか、プラグインの設定画面なんかを作っている時って、簡易的なものならば1ファイルで「入力処理」と「保存処理」を書いてしまったりしますよね。

で、大抵はフォームのデータと一緒に input type=”hidden” でフラグを送信してあげることで保存処理をするタイミングなのか、フォームを表示するタイミングなのかを判別することになると思います。

例えば、こんなかんじ?

これで、ちゃんと保存処理を書けばうごくんですけども、1つ問題があります。

Notice: Undefined index が表示される

このままでもスクリプトは動きますが、画面上部に、「Notice: Undefined index (以下略)」といったエラーが表示されてしまいます。

これはどういう時に起きるのかというと、

未定義の配列を参照しようとしてるときに「そんなのないよー」と言ってくれてるのですね。

ちなみに未定義の変数を使おうとすると 「Notice: Undefined variable」となります。

Notice: Undefined index を回避するには

最初にページに入った時点ではフォームのデータが送信されていないため、 $_POST[‘mode’] は存在しませんのでエラーになってしまうんですね。

なので、これが存在するかをチェックして、ある場合は処理させるというふうにすればOKです。

 みたいな感じですかね?

あるいは、こんな書き方でもいいかもしれません。

 自分はこの方法をよくつかいます。

よかったら参考にしてください。

 

ちなみに…

PHPのこの手のエラーにはいくつかの段階が有り、
Parse error , Warning , Fatal error , Notice などがあるのですが、そのうち Notice はほかのエラーと比べるとそこまで致命的なエラーではなく、動作が停止しない場合も多いです。

実際 php.ini の初期設定では Notice エラーは表示されません。

なので、設定で非表示にしてしまっても構わないのかもしれませんが…確実にしっかりと作っていきたいならこのへんも解消しておきたいですね。

WordPressも通常のモードでは表示されませんが、wp-config.php で WP_DEBUG を true にしてあげると表示されるようになります。

WP_DEBUG がオンになっていると、非推奨になったタグなんかも教えてくれるのでテーマやプラグインを作る際のテスト環境では常に ON にしておく癖を付けたいですね。 

TAGS