質問編集履歴

1

情報追加

2023/05/31 08:11

投稿

fsdfsa
fsdfsa

スコア11

test CHANGED
File without changes
test CHANGED
@@ -1,21 +1,119 @@
1
1
  ### 実現したいこと
2
- phpを使用、名前とメールの情報更新
2
+ list.phpで更新ボタン押すと、update_form.phpに遷移し、変更したい名前とメールアドレスを入力するとlist.phpに戻り、リスト一覧名前とメールアドレスが更新されて表示されるようにしたいです。
3
3
 
4
4
 
5
5
  ### 前提
6
-
7
- phpでデータ更新をしたいのですが、エラーは発生しませんが更新されないです。
6
+ エラーは発生しませんが情報が更新されないです。
8
7
 
9
8
  ### 該当のソースコード
10
9
 
11
- ```ここに言語名を入力
10
+ ```php
12
-
11
+ //list.php
12
+
13
-
13
+ <?php
14
-
14
+ // PDO接続先の設定
15
-
15
+ define("HOST", "localhost")
16
-
16
+ define("DB_NAME", "task02");
17
-
17
+ define("USER", "root");
18
-
18
+ define("PASS", "root"); //MAMPの場合はパスワードのダブルクォーテーション内をrootに変更してください。
19
+
20
+ // 文字化け対策
21
+
22
+ $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'");
23
+
24
+
25
+ // DB(データベース)との接続開始
26
+ $pdo = new PDO("mysql:host=".HOST.";dbname=".DB_NAME, USER, PASS, $options);
27
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
28
+ $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
29
+
30
+ $sql = "SELECT * FROM users ORDER BY id ASC;";
31
+
32
+ $stmt = $pdo->query($sql);
33
+
34
+ $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
35
+ ?>
36
+
37
+ <!DOCTYPE html>
38
+ <html>
39
+
40
+ <head>
41
+ <meta charset="utf-8">
42
+ <link rel="stylesheet" href="CSS/reset.css">
43
+ <link rel="stylesheet" href="CSS/style.css">
44
+ <link rel="stylesheet" href="CSS/responsive.css">
45
+ <meta name="viewport" content="width=device-width,initial-scale=1">
46
+ <!-- fontawesome -->
47
+ <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet">
48
+ <!-- jQuery -->
49
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
50
+ <script src="js/base.js"></script>
51
+
52
+ <title>aaa/title>
53
+ </head>
54
+
55
+ <body>
56
+
57
+ <header>
58
+ <div class="icon">
59
+ <a href="#">
60
+ <img src="./img/DAWN_icon.png" alt="icon">
61
+ </a>
62
+ </div>
63
+ <h1>リストの表示<br><span class="sub">-list-</span></h1>
64
+
65
+ </header>
66
+ <div id="content">
67
+
68
+ <table style="border-collapse: separate">
69
+
70
+ <tr>
71
+
72
+ <th class="id">ID</th>
73
+
74
+ <th class="name">NAME</th>
75
+
76
+ <th class="mail">MAIL</th>
77
+
78
+ <th class="up">EDIT</th>
79
+
80
+ <th class="dele">DELETE</th>
81
+
82
+ </tr>
83
+
84
+ <?php foreach ($result as $list) { ?>
85
+
86
+ <tr>
87
+
88
+ <td class="id"><?php echo htmlspecialchars($list["id"]); ?></td>
89
+
90
+ <td class="name"><?php echo htmlspecialchars($list["username"]); ?></td>
91
+
92
+ <td class="mail"><?php echo htmlspecialchars($list["mail"]); ?></td>
93
+
94
+ <td class="up">
95
+
96
+ <a href="update_form.php?id=<?php echo $list["id"]; ?>">
97
+ <i class="fas fa-file-alt"></i>
98
+ </a>
99
+
100
+ </td>
101
+ <td class="dele">
102
+ <a href="delete.php?id=<?php echo htmlspecialchars($list["id"]); ?>"onclick="return confirm('このレコードを削除します。よろしいでしょうか?')">
103
+ <i class="fas fa-trash-alt"></i>
104
+ </a>
105
+ </td> </tr>
106
+
107
+ <?php } ?>
108
+ <div class="create_btn">
109
+ <button>
110
+ <a href="create_form.html"><i class="fas fa-plus-circle"> 新規登録はこちら</i></a>
111
+ </button>
112
+ </div>
113
+ </table>
114
+ </div>
115
+ </body>
116
+ </html>
19
117
  <form action="update.php" method="post" onsubmit="return check()" id="content">
20
118
 
21
119
  <h2> <span class=update_text>「ID:</span><span class="strong orange"><?php echo $id?></span><span class=update_text>」</span> <span> の登録情報を以下の内容に変更します。</h2>
@@ -42,54 +140,183 @@
42
140
 
43
141
  </div>
44
142
 
45
-
143
+ ```
46
-
144
+
145
+
146
+
147
+
47
- update.php
148
+ ```php
149
+
150
+ //update_form.php
48
151
 
49
152
  <?php
50
153
 
154
+ // PDO接続先の設定
155
+
156
+ define("HOST", "localhost");
157
+
158
+ define("DB_NAME", "task02");
159
+
160
+ define("USER", "root");
161
+
162
+ define("PASS", "root");
163
+
164
+
165
+
166
+ // 文字化け対策
167
+
168
+ $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'");
169
+
170
+ // DB(データベース)との接続開始
171
+ $pdo = new PDO("mysql:host=".HOST.";dbname=".DB_NAME, USER, PASS, $options);
172
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
173
+ $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
174
+
175
+ $id =$_GET["id"];
176
+ ?>
177
+
178
+ <!DOCTYPE html>
179
+
180
+ <html>
181
+
182
+ <head>
183
+
184
+ <meta charset="utf-8">
185
+
186
+ <link rel="stylesheet" href="CSS/reset.css">
187
+
188
+ <link rel="stylesheet" href="CSS/style.css">
189
+
190
+ <link rel="stylesheet" href="CSS/responsive.css">
191
+
192
+ <meta name="viewport" content="width=device-width,initial-scale=1">
193
+
194
+ <title>aaa</title>
195
+
196
+ </head>
197
+
198
+
199
+
200
+ <body>
201
+
202
+ <header>
203
+
204
+ <div class="icon">
205
+
206
+ <a href="list.php">
207
+
208
+ <img src="./img/DAWN_icon.png" alt="icon">
209
+
210
+ </a>
211
+
212
+ </div>
213
+
214
+ <h1>リストの更新<br><span class="sub">-update-</span></h1>
215
+
216
+ </header>
217
+
218
+ <div id="content">
219
+
220
+
221
+ <form action="update.php" method="post" onsubmit="return check()" id="content">
222
+
223
+ <h2> <span class=update_text>「ID:</span><span class="strong orange"><?php echo $id?></span><span class=update_text>」</span> <span> の登録情報を以下の内容に変更します。</h2>
224
+
225
+ <div class="form_input">
226
+
227
+ <div class="username">
228
+
229
+ <label>ユーザー名</label>
230
+
231
+ <input type="text" name="username">
232
+
233
+ </div>
234
+
235
+ <div class="mail">
236
+
237
+ <label>メールアドレス</label>
238
+
239
+ <input type="email" name="mail">
240
+
241
+ </div>
242
+
243
+
244
+ </div>
245
+
246
+ <div class="form_btn">
247
+
248
+ <div class="form_return_btn">
249
+
250
+ <p class="return"><a href="list.php">リスト表に戻る</a></p>
251
+
252
+ </div>
253
+
254
+ <div class="form_create_btn">
255
+
256
+ <input type="submit" value="新規登録">
257
+
258
+ </div>
259
+
260
+ </div>
261
+
262
+ </form>
263
+
264
+ </div>
265
+
266
+ <script type="text/javascript">
267
+
268
+ function check() {
269
+
270
+ if (window.confirm('登録をしてよろしいですか?')) { // 確認ダイアログを表示
271
+
272
+ // 「OK」時は送信を実行
273
+
274
+ return true;
275
+
276
+ } else { // 「キャンセル」時の処理
277
+
278
+ window.alert('登録がキャンセルされました'); // 警告ダイアログを表示
279
+
280
+ // 送信を中止
281
+
282
+ return false;
283
+
284
+ }
285
+
286
+ }
287
+
288
+ </script>
289
+
290
+ </body
291
+ ```
292
+
293
+ ```php
294
+ ///update.php
295
+
296
+ <?php
51
297
  $name = $_POST["username"];
52
-
53
298
  $mail = $_POST["mail"];
54
-
55
299
  $id =$_POST["id"];
56
300
 
57
-
58
301
  // PDO接続先の設定
59
-
60
302
  define("HOST", "localhost");
61
-
62
303
  define("DB_NAME", "task02");
63
-
64
304
  define("USER", "root");
65
-
66
305
  define("PASS", "root");
67
306
 
68
-
69
307
  // 文字化け対策
70
-
71
308
  $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'");
72
309
 
73
-
74
-
75
-
76
-
77
310
  try {
78
311
 
79
312
  $pdo = new PDO("mysql:host=" . HOST . ";dbname=" . DB_NAME, USER, PASS, $options);
80
-
81
-
82
-
83
313
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
84
-
85
314
  $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
86
315
 
87
316
  $sql = "update users set username='$name', mail ='$mail' where id = '$id' ";
88
-
89
317
  $stmt = $pdo->query($sql);
90
318
 
91
319
  header("Location: list.php");
92
-
93
320
  exit;
94
321
 
95
322
  } catch (Exception $e) {
@@ -99,8 +326,10 @@
99
326
  }
100
327
  ?>
101
328
 
102
-
103
-
104
-
105
329
  ```
106
330
 
331
+ ### 試したこと
332
+ $sql = "update users set username='$name', mail ='$mail' where id = '$id' ";の見直し
333
+ idの受け渡しがうまく行っていないと思い、見直しましたが改善されないです。
334
+
335
+