前提・実現したいこと
MYSQLにあるデータの管理画面を作成しています。
一覧画面でDBから、登録されているデータを抽出し、一覧にして表示してそれぞれのデータに、「修正」「削除」のボタンを設置しました。
削除画面で戻るボタンと削除ボタンを追加して、削除ボタンが押されたらそのユーザー情報を削除するという機能を実装したいです。
その前に送られてきたユーザ情報を表示するようにしたかったのですが、以下のようなエラーを吐き出しました。
・1つ目にエラーを改善し、削除画面に選択したユーザーの情報を表示
・2つ目は本当にできればでよいのですが、削除ボタンが押されたらそのユーザー情報を削除するという機能の提案
情報、学習不足は重々承知しております。お知恵を拝借させていただけませんでしょうか。
発生している問題・エラーメッセージ
Notice: Undefined variable: id in C:\xampp\htdocs\offer\tr\delete.php on line 26
select * from users where id =
該当のソースコード
php
1//表作成 2 $stmt = $db->query("select * from users"); 3 $users = $stmt->fetchAll(PDO::FETCH_ASSOC); 4 echo "<table border=1>\n"; 5 echo "\t<tr><th>id</th><th>name</th><th>email</th><th>削除</th><th>修正</th></tr>\n"; 6 foreach ($users as $user) { 7 echo "\t<tr>\n"; 8 echo "\t\t<td>{$user['id']}</td>\n"; 9 echo "\t\t<td>{$user['name']}</td>\n"; 10 echo "\t\t<td>{$user['email']}</td>\n"; 11 echo "<form action=delete.php method=post>"; 12 echo "<input type=hidden name=id value=" . $user["id"] . ">"; 13 echo "<td><input type=submit value=削除></td>"; 14 echo "</form>"; 15 echo "<form action=data_change.php method=post>"; 16 echo "<input type=hidden name=id value=" . $user["id"] . ">"; 17 echo "<td><input type=submit value=修正></td>"; 18 echo "</form>"; 19 20 21 echo "\t</tr>\n"; 22 } 23 echo "</table>\n";
一覧画面で上のように表示して、削除画面でテーブルの主キーであるIDが変数$idとして送信されてくるので、削除画面ではこの$idを元にSQLのselect文を作成してレコードの表示を行います
php
1<body> 2 <title>本当に削除しますか?</title> 3 4 <a href="contr.php">戻る</a> 5 6 7 <a>削除</a> 8 <?php 9 10 define('DB_DATABASE','データベース名'); //database設定 11 define('DB_USERNAME','ユーザー名'); //user設定 12 define('DB_PASSWORD','パス'); //PASS設定 13 define('PDO_DSN','mysql:dbhost=localhost;charset=utf8mb4;'. DB_DATABASE); 14 15 try{ 16 //connect 17 $db = new PDO(PDO_DSN,DB_USERNAME,DB_PASSWORD); 18 $db-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 19 20 echo "select * from users where id = $user['id']"; 21 22 }catch(PDOException $e){ 23 echo $e-> getMessage(); 24 exit; 25 } 26 ?> 27 </body>
試したこと
試しに削除画面のセレクト文の中で、echo "select * from users where id = $_POST['$user["id"]']";
したところ、
エラーメッセージ:Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\offer\tr\delete.php on line 26
とでてしまいました。セレクト文のid = $_POST['$user["id"]']に構造上の不備があるのはエラーを調べて分かったのですが、正しい使い方までは発見することはできずでした。
また上のセレクト文のなかのid =$user["id"]"としたところ、同じようなエラー文で
エラーメッセージ:Parse error: syntax error, unexpected '"', expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\offer\tr\delete.php on line 26
とでました。
補足情報(FW/ツールのバージョンなど)
PHP 7.3.1
MYSQL 15
回答2件
あなたの回答
tips
プレビュー