本を見ながら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で質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPで[]の使い方について
-
BLOBでの画像表示について
-
DBで検索結果に該当するデータ...
-
sortable ギブアップです…助け...
-
while文の中にwhile文を書きた...
-
PHPでMySQLのデータを2次元配...
-
PHP 10件表示 "前へ" "次へ"
-
ユーザー名、パスで認証して、...
-
MySQLに保存した画像を表示したい
-
PHP と MySQL でテーブルの行数...
-
PHPについてなのですが未定義の...
-
MySQLでデータベースにデータin...
-
VBAをつかってクエリの情報を抽...
-
テキストボックスに入れた内容...
-
ResultSetインターフェイスでの...
-
insert1つの処理でもトランザ...
-
csvをDBへ読み込んだら、NULLが...
-
JAVA SQLServerException 列名 ...
-
VB.NET
-
エラー3011
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DBで検索結果に該当するデータ...
-
PHPで[]の使い方について
-
アラートでyes noを作りたいです。
-
phpでmysqlを使ってデータベー...
-
PHP、SQLite3のデーターでログ...
-
dbに登録したデータをphpのプル...
-
checkboxクリック時、SQLを実行...
-
PHPでMY SQLの連想配列をリンク...
-
文字化けが解決できません。お...
-
PHPでMySQLデータを呼び出し、w...
-
SELECT結果から動的にコンボボ...
-
php ログインフォーム作成
-
VBA初心者です。
-
チェックボックスでチェックし...
-
sortableを使用したデータのUPDATE
-
php mysqlで作ったデータをgoog...
-
mysql_insert_id()の使い方
-
PHPとSmartyを使い、データベー...
-
MySQLに保存した画像を表示したい
-
PHP+MySQLでの配列のinsert文に...
おすすめ情報