データベースの更新がされないです。

実現したいこと

list.phpで更新ボタンを押すと、update_form.phpに遷移し、変更したい名前とメールアドレスを入力するとlist.phpに戻り、リスト一覧の名前とメールアドレスが更新されて表示されるようにしたいです。

前提

エラーは発生しませんが情報が更新されないです。

該当のソースコード

php

1//list.php 2 3<?php4// PDO接続先の設定5define("HOST", "localhost")6define("DB_NAME", "task02");7define("USER", "root");8define("PASS", "root"); //MAMPの場合はパスワードのダブルクォーテーション内をrootに変更してください。9 10// 文字化け対策11 12$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'");13 14 15// DB(データベース)との接続開始16$pdo = new PDO("mysql:host=".HOST.";dbname=".DB_NAME, USER, PASS, $options);17$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);18$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);19 20$sql = "SELECT * FROM users ORDER BY id ASC;";21 22$stmt = $pdo->query($sql);23 24$result = $stmt->fetchAll(PDO::FETCH_ASSOC);25?>26 27<!DOCTYPE html>28<html>29 30 <head>31 <meta charset="utf-8">32 <link rel="stylesheet" href="CSS/reset.css">33 <link rel="stylesheet" href="CSS/style.css">34 <link rel="stylesheet" href="CSS/responsive.css">35 <meta name="viewport" content="width=device-width,initial-scale=1">36 <!-- fontawesome -->37 <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet">38 <!-- jQuery -->39 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>40 <script src="js/base.js"></script>41 42 <title>aaa/title> 43 </head>44 45 <body>46 47 <header>48 <div class="icon">49 <a href="#">50 <img src="./img/DAWN_icon.png" alt="icon">51 </a>52 </div>53 <h1>リストの表示<br><span class="sub">-list-</span></h1>54 55 </header>56 <div id="content">57 58 <table style="border-collapse: separate">59 60 <tr>61 62 <th class="id">ID</th>63 64 <th class="name">NAME</th>65 66 <th class="mail">MAIL</th>67 68 <th class="up">EDIT</th>69 70 <th class="dele">DELETE</th>71 72 </tr>73 74 <?php foreach ($result as $list) { ?>75 76 <tr>77 78 <td class="id"><?php echo htmlspecialchars($list["id"]); ?></td>79 80 <td class="name"><?php echo htmlspecialchars($list["username"]); ?></td>81 82 <td class="mail"><?php echo htmlspecialchars($list["mail"]); ?></td>83 84 <td class="up">85 86 <a href="update_form.php?id=<?php echo $list["id"]; ?>">87 <i class="fas fa-file-alt"></i>88 </a>89 90 </td>91 <td class="dele">92 <a href="delete.php?id=<?php echo htmlspecialchars($list["id"]); ?>"onclick="return confirm('このレコードを削除します。よろしいでしょうか?')">93 <i class="fas fa-trash-alt"></i>94</a>95</td> </tr>96 97 <?php } ?>98 <div class="create_btn">99 <button>100 <a href="create_form.html"><i class="fas fa-plus-circle"> 新規登録はこちら</i></a>101 </button>102</div>103 </table>104 </div>105 </body>106</html>107<form action="update.php" method="post" onsubmit="return check()" id="content">108 109 <h2> <span class=update_text>「ID:</span><span class="strong orange"><?php echo $id?></span><span class=update_text></span> <span> の登録情報を以下の内容に変更します。</h2>110 111 <div class="form_input">112 113 <div class="username">114 115 <label>ユーザー名</label>116 117 <input type="text" name="username">118 119 </div>120 121 <div class="mail">122 123 <label>メールアドレス</label>124 125 <input type="email" name="mail">126 127 </div>128 129 <input type="hidden" name="id">130 131 </div>132

php

12//update_form.php 3 4<?php5 6// PDO接続先の設定7 8define("HOST", "localhost");9 10define("DB_NAME", "task02");11 12define("USER", "root");13 14define("PASS", "root"); 15 16 17 18// 文字化け対策19 20$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'");21 22// DB(データベース)との接続開始23$pdo = new PDO("mysql:host=".HOST.";dbname=".DB_NAME, USER, PASS, $options);24$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);25$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);26 27$id =$_GET["id"];28?>29 30<!DOCTYPE html>31 32<html>33 34<head>35 36 <meta charset="utf-8">37 38 <link rel="stylesheet" href="CSS/reset.css">39 40 <link rel="stylesheet" href="CSS/style.css">41 42 <link rel="stylesheet" href="CSS/responsive.css">43 44 <meta name="viewport" content="width=device-width,initial-scale=1">45 46 <title>aaa</title>47 48</head>49 50 51 52<body>53 54 <header>55 56 <div class="icon">57 58 <a href="list.php">59 60 <img src="./img/DAWN_icon.png" alt="icon">61 62 </a>63 64 </div>65 66 <h1>リストの更新<br><span class="sub">-update-</span></h1>67 68 </header>69 70 <div id="content">71 72 73 <form action="update.php" method="post" onsubmit="return check()" id="content">74 75 <h2> <span class=update_text>「ID:</span><span class="strong orange"><?php echo $id?></span><span class=update_text></span> <span> の登録情報を以下の内容に変更します。</h2>76 77 <div class="form_input">78 79 <div class="username">80 81 <label>ユーザー名</label>82 83 <input type="text" name="username">84 85 </div>86 87 <div class="mail">88 89 <label>メールアドレス</label>90 91 <input type="email" name="mail">92 93 </div>94 95 96 </div>97 98 <div class="form_btn">99 100 <div class="form_return_btn">101 102 <p class="return"><a href="list.php">リスト表に戻る</a></p>103 104 </div>105 106 <div class="form_create_btn">107 108 <input type="submit" value="新規登録">109 110 </div>111 112 </div>113 114 </form>115 116 </div>117 118 <script type="text/javascript">119 120 function check() {121 122 if (window.confirm('登録をしてよろしいですか?')) { // 確認ダイアログを表示123 124 // 「OK」時は送信を実行125 126 return true;127 128 } else { // 「キャンセル」時の処理129 130 window.alert('登録がキャンセルされました'); // 警告ダイアログを表示131 132 // 送信を中止133 134 return false;135 136 }137 138 }139 140 </script>141 142</body

php

1///update.php 2 3<?php4$name = $_POST["username"];5$mail = $_POST["mail"];6$id =$_POST["id"];7 8// PDO接続先の設定9define("HOST", "localhost");10define("DB_NAME", "task02");11define("USER", "root");12define("PASS", "root"); 13 14// 文字化け対策15$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'");16 17try {18 19 $pdo = new PDO("mysql:host=" . HOST . ";dbname=" . DB_NAME, USER, PASS, $options);20 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);21 $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);22 23 $sql = "update users set username='$name', mail ='$mail' where id = '$id' ";24 $stmt = $pdo->query($sql);25 26 header("Location: list.php");27 exit;28 29} catch (Exception $e) {30 31 echo $e->getMessage();32 33}34?>35

試したこと

$sql = "update users set username='$name', mail ='$mail' where id = '$id' ";の見直し
idの受け渡しがうまく行っていないと思い、見直しましたが改善されないです。

コメントを投稿

0 コメント