質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

864閲覧

PHP:undefined indexの消し方

haji_naru

総合スコア5

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/04/16 08:24

編集2020/04/16 10:14

前提・実現したいこと

最近PHPを勉強し始めた者です。
初めての投稿でご無礼がありましたら申し訳ありません。

PHPで、todolistを作成しています。
実行予定回数の確認表示画面を実装中に、以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

内容確認 Cleaning x 0 個 Notice: Undefined index: Wash The Dish in C:\xampp\htdocs\php_pr2\confirm.php on line 17 Wash The Dish x 個 Notice: Undefined index: Playing Game in C:\xampp\htdocs\php_pr2\confirm.php on line 17 Playing Game x 個

該当のソースコード

cofirm.php

113 <h2>内容確認</h2> 214 315 <?php foreach ($todos as $todo): ?> 416 517 <?php $orderCount = $_POST[$todo->getName()] ?> 618 <?php echo $todo->getName() ?> 719 x 820 <?php echo $orderCount ?> 921 個 1022 <?php endforeach ?>

試したこと

同名のエラー内容で検索し、

<?php if(isset($_POST[$todo->getName()] )) { や、 <?php if(!empty($_POST[$todo->getName()] )) { を16行目に書き足しましたが、いずれもエラーが消せませんでした。 1つ目のcleaningは表示出来て、2つ目以降にnoticeが出る理由も理解できておりません。 大変未熟な質問かと思いますが、行き詰ってしまった為、 お力添えをいただけましたら幸いです。 よろしくお願い致します。 ### 補足情報(FW/ツールのバージョンなど) var_dump[$_POST]の結果です。 array(3) { ["Cleaning"]=> string(1) "0" ["Wash_The_Dish"]=> string(1) "0" ["Playing_Game"]=> string(1) "0" } Cleaning x 0 個 array(3) { ["Cleaning"]=> string(1) "0" ["Wash_The_Dish"]=> string(1) "0" ["Playing_Game"]=> string(1) "0" } Notice: Undefined index: Wash The Dish in C:\xampp\htdocs\php_pr2\confirm.php on line 17 Wash The Dish x 個 array(3) { ["Cleaning"]=> string(1) "0" ["Wash_The_Dish"]=> string(1) "0" ["Playing_Game"]=> string(1) "0" } Notice: Undefined index: Playing Game in C:\xampp\htdocs\php_pr2\confirm.php on line 17 Playing Game x 個

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/04/16 08:28

そもそも$_POSTにはどのような値が設定されたのでしょう。var_dumpの結果をそのままご提示ください。 また、みた感じnameにスペースがある文字列を指定しているように見受けられます。 なにがきてるのでしょうか。
haji_naru

2020/04/16 08:38

ありがとうございます。var_dump(16行目に挿入)結果以下になります。 string(1) "0" Cleaning x 0 個 Notice: Undefined index: Wash The Dish in C:\xampp\htdocs\php_pr2\confirm.php on line 16 NULL Notice: Undefined index: Wash The Dish in C:\xampp\htdocs\php_pr2\confirm.php on line 18 Wash The Dish x 個 Notice: Undefined index: Playing Game in C:\xampp\htdocs\php_pr2\confirm.php on line 16 NULL Notice: Undefined index: Playing Game in C:\xampp\htdocs\php_pr2\confirm.php on line 18 Playing Game x 個 nameにスペースがある文字列…Wash The Dish, Playing Gameでしょうか。
m.ts10806

2020/04/16 10:01

質問は編集できますので
m.ts10806

2020/04/16 10:05

var_dump($_POST) の結果を提示してほしかったのですが。 スペース入ってても参照は可能です。
haji_naru

2020/04/16 10:28

何度もすみません、質問に加筆いたしました。 このような書き方で合ってますでしょうか?よろしくお願いします。
m.ts10806

2020/04/16 10:58

はい。ありがとうございます。 結果は想定通りでした。そちら踏まえて回答しました。 参考まで。
guest

回答3

0

ベストアンサー

$_POSTの結果を提示してもらったのでお分かりかと思いますが、
スペースが_に変換されています。これは仕様です。

外部から来る変数

注意:
変数名のドットやスペースはアンダースコアに変換されます。 たとえば <input name="a.b" /> は $_REQUEST["a_b"] となります。

あまりスペースやドットを設定しなければならない要件はないのですが、
上記のような仕様は意識して実装する必要があります。

投稿2020/04/16 10:57

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

haji_naru

2020/04/16 11:04

なるほど、知りませんでした…! 大変勉強になりました、ありがとうございますm(_ _)m
m.ts10806

2020/04/16 11:49

「あれ?」と思ったときはPHPマニュアルで仕様確認が原則です。
guest

0

すみません、nameにスペース文字列を入れており、スペースなくしたところ解決いたしました。
全く気付きませんでした。お手数をおかけし申し訳ありません、ありがとうございました!!

投稿2020/04/16 09:30

haji_naru

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

php

1$orderCount = filter_input(INPUT_POST,$todo->getName());

投稿2020/04/16 08:31

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問