本を見ながらXAMPPのローカル環境にて勉強しているのですが、
本が古いのかNoticeエラーが出てしまいます。
<html>
<head>
<title>SQLコマンドに数値のみを反映する</title>
</head>
<body>
<?php
// intval()関数による変換
$temp_sql = "SELECT * FROM t1 WHERE id = %s";
$id = isset($_POST["id"]) ? intval($_POST["id"]) : "";
$result_sql_intval = sprintf($temp_sql, $id);
// sprintf()関数による変換
$temp_sql = "SELECT * FROM t1 WHERE id = %d";
$id = isset($_POST["id"]) ? $_POST["id"] : "";
$result_sql_sprintf = sprintf($temp_sql, $id);
?>
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
<table>
<tr>
<td>ID:<input type="text" name="id"
value="<?php echo $_POST["id"] ?>">
<input type="submit" value="作成" name="sub1">
</td>
</tr>
<tr>
</tr>
<tr>
</td>
</tr>
</table>
</form>
</body>
<?php
echo "<p>入力値:" . $_POST["id"] . "</p>";
echo "<p>作成されたSQL(sprintf):" . $result_sql_sprintf . "</p>";
echo "<p>作成されたSQL(intval):" . $result_sql_intval . "</p>";
?>
</html>
上記の正解サンプルで表示させてもNoticeエラーが
echo "<p>入力値:" . $_POST["id"] . "</p>";
の部分で引っかかってしまいます。
エラーは
Notice: Undefined index: id in C:\xampp\htdocs\intval1.php on line 34
翻訳してみると未定義のインデックスになるのですが
どのようにすればいいのでしょうか?
No.2ベストアンサー
- 回答日時:
> もうひとつ質問で申し訳ないのですが入力フォームの中に
> <br /><b>Notice</b>: Undefined index: id in <b>C:\xampp\htdocs\intval.php</b> o
> n line <b>21</b><br />
> と記入された状態でしてこれが連想添字というもので値を取得しようとしているという事なので
> しょうか?
こ> のフォームに記入されたものを消して適当な数字を入れたらエラーは消えました。
見落としていましたが、現象と対応は同じです。
$_POSTは配列変数です。
配列は大まかにわけて以下の2つです。
・数字を指定して値を操作する。$Value[1]とか。
・文字列を指定して値を操作する。$Value["hoge"]とか。
ここでいう1や"hoge"はインデックスと呼ばれ、更に文字列で指定する場合、それを連想添字といいます。
ここで怒られているのは、『idなんて名前のインデックスは定義されてねーよ』です。
フォーム送信されてないのだから当然ですね。
No.1
- 回答日時:
上のロジックの方では、セットされていなかったら空白、とコーディングしているのに、なぜ同じようにしないのでしょう。
POSTデータがないのに連想添字で値を取得しようとしているから出ています。
回答ありがとうございます!
当方勉強を始めたばかりで右も左もわからないくて、
とりあえず書籍のとうりコーディングしていまして、
上の方のロジックで何をかをしたら空白で返すというのはなんとなく理解できていたのですが、
エラーが出ている部分にどうコーディングして空白で返すようにコーディングしたらいいかいいのか分からないのです・・・
もうひとつ質問で申し訳ないのですが入力フォームの中に
<br /><b>Notice</b>: Undefined index: id in <b>C:\xampp\htdocs\intval.php</b> on line <b>21</b><br />
と記入された状態でしてこれが連想添字というもので値を取得しようとしているという事なのでしょうか?
このフォームに記入されたものを消して適当な数字を入れたらエラーは消えました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
dbに登録したデータをphpのプル...
-
エクセルVBAについて
-
sortableを使用したデータのUPDATE
-
アラートでyes noを作りたいです。
-
PHP 10件表示 "前へ" "次へ"
-
PHPでMySQLのデータを2次元配...
-
取得データの置き換え方法
-
syntax errorの原因について
-
PHP 関数呼び出し後に配列添字...
-
MySQLでデータベースにデータin...
-
実行時エラー3131 FROM 句の構...
-
insert1つの処理でもトランザ...
-
VBAをつかってクエリの情報を抽...
-
Pro*Cの構文エラー
-
SQL文が実行できません
-
mysqliを使ってデータベースを...
-
PHP データの抽出&相関検定の...
-
JAVA SQLServerException 列名 ...
-
CSVをダウンロードさせた際、CS...
-
エラー3011
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで[]の使い方について
-
アラートでyes noを作りたいです。
-
checkboxクリック時、SQLを実行...
-
dbに登録したデータをphpのプル...
-
PHPでMySQLデータを呼び出し、w...
-
PHP・MySQL使用で、年齢制限を...
-
Smartyを用いたコードの書き方...
-
文字化けが解決できません。お...
-
DBで検索結果に該当するデータ...
-
テーブル内の文字によりログイ...
-
PHP+MySQLでの配列のinsert文に...
-
ラジオボタンをループすること...
-
sortableを使用したデータのUPDATE
-
記事のコメント数表示について
-
htmlとphpの分離
-
エクセルVBAについて
-
入れ子のようにしてデータを作...
-
重複したフィールドに関して
-
VBA初心者です。
-
PHPでの検索機能がうまく動きま...
おすすめ情報