teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

コードの修正

2021/07/13 12:28

投稿

kiyuu
kiyuu

スコア0

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,9 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- パスワードを入力して一致した場合に指定した番号のデータを削除すること。
3
+ パスワードを入力して一致した場合に指定した番号のデータを投稿フォームに表示し、その値を編集すること。
4
4
 
5
5
  ### 発生している問題・エラーメッセージ
6
- パスワードを入力しても削除されない。
6
+ 正しいパスワードを入力しても、投稿フォームに編集したい値が入力されず、編集ができない。
7
7
  ### 該当のソースコード
8
8
 
9
9
  ```php
@@ -17,45 +17,43 @@
17
17
 
18
18
  <?php
19
19
  //接続省略
20
- //table作成
20
+ /*//table作成
21
- $sql = "CREATE TABLE IF NOT EXISTS keiijban"
21
+ $sql = "CREATE TABLE IF NOT EXISTS keijiban"
22
22
  . "("
23
23
  . "id INT AUTO_INCREMENT PRIMARY KEY,"
24
- . "name char(32),"
24
+ . "name CHAR(32),"
25
- . "comment TEXT,"
25
+ . "comment VARCHAR(100),"
26
- . "date TEXT,"
26
+ . "date CHAR(100),"
27
- . "password INT(20)"
27
+ . "password INT(100)"
28
28
  . ")";
29
29
  $stmt = $pdo->query($sql);
30
+ */
30
31
  //変数に代入
31
32
  $date = date("Y/m/d/ H:i:s");
32
-
33
- //投稿機能
34
- if(!empty($name) && !empty($comment) && !empty($password)){
35
33
  $name = $_POST['name'];
36
34
  $comment = $_POST['comment'];
37
- $password = $_POST['password'];
35
+ $pass = $_POST['pass'];
36
+ //投稿機能
37
+ if(!empty($_POST['name']) && !empty($_POST['comment']) && !empty($_POST['pass'])){
38
- $sql = $pdo -> prepare("INSERT INTO keiijban (name, comment, date, password) VALUES (:name, :comment, :date, :password)");
38
+ $sql = $pdo -> prepare("INSERT INTO keijiban (name, comment, date, password) VALUES (:name, :comment, :date, :password)");
39
39
  $sql -> bindParam(':name', $name, PDO::PARAM_STR);
40
40
  $sql -> bindParam(':comment', $comment, PDO::PARAM_STR);
41
41
  $sql -> bindParam(':date', $date, PDO::PARAM_STR);
42
- $sql -> bindParam(':password', $password, PDO::PARAM_INT);
42
+ $sql -> bindParam(':password', $pass, PDO::PARAM_INT);
43
43
  $sql -> execute();
44
- }
44
+ }
45
-
45
+
46
46
  //削除機能
47
- if(!empty($delete) && !empty($dpass)) {
47
+ //変数に代入
48
48
  $delete = $_POST['delete'];
49
49
  $dpass = $_POST['dpass'] ;
50
+ if(!empty($_POST['delete']) && !empty($_POST['dpass'] )) {
50
- $sql = 'SELECT * FROM keiijban WHERE id=:id';
51
+ $sql = 'DELETE FROM keijiban WHERE id=:id';
51
52
  $stmt = $pdo->prepare($sql);
52
- $stmt->bindParam(':id', $delete, PDO::PARAM_INT);
53
+ $stmt->execute(array(':id' => $_POST['delete']));
53
- $stmt->execute();
54
54
  $results = $stmt->fetchAll();
55
55
  foreach ($results as $row) {
56
- if ($dpass == $password){
56
+ if ($dpass == $row['password']){
57
- $sql = 'DELETE FROM keiijban WHERE id=:id';
58
- $stmt = $pdo->prepare($sql);
59
57
  $stmt->bindParam(':id', $delete, PDO::PARAM_INT);
60
58
  $stmt->execute();
61
59
  }else{
@@ -63,24 +61,59 @@
63
61
  }
64
62
  }
65
63
  }
64
+
65
+ //編集機能
66
+ //変数に代入
67
+ $edit = $_POST['edit'];
68
+ $date = date("Y/m/d/ H:i:s");
69
+ $name = $_POST['name'];
70
+ $comment = $_POST['comment'];
71
+ $epass = $_POST['epass'];
72
+ if(!empty($_POST['edit']) && !empty($_POST['epass'] )) {
73
+ $sql = 'UPDATE keijiban SET id=:id,name=:name,comment=:comment,date=:date,password=:password WHERE id=:id';
74
+ $stmt = $pdo->prepare($sql);
75
+
76
+ $results = $stmt->fetchAll();
77
+ foreach($results as $row) {
78
+
79
+ if($edit == $row['id'] && $epass == $row['password']) {
80
+ $ename = $row['name'];
81
+ $ecom = $row['comment'];
82
+ $epass = $row['password'];
83
+
84
+ $stmt->bindParam(':name', $name, PDO::PARAM_STR);
85
+ $stmt->bindParam(':comment', $comment, PDO::PARAM_STR);
86
+ $stmt->bindParam(':date', $date, PDO::PARAM_STR);
87
+ $stmt->bindParam(':password', $epass, PDO::PARAM_INT);
88
+ $stmt->execute();
89
+
90
+ }else{
91
+
92
+ }
93
+ }
94
+ $sql = 'SELECT * FROM keijiban';
95
+ $stmt = $pdo->query($sql);
96
+ $stmt->execute();
97
+ }
98
+
66
99
  ?>
67
100
  <form action="" method="post">
68
- <input type="text" name="name" placeholder="名前" value="<?php if(!empty($ename)){echo $ename;}?>"><br>
101
+ <input type="text" name="name" placeholder="名前" value="<?php if(isset($ename)){echo $ename;}?>"><br>
69
- <input type="text" name="comment"placeholder="コメント" value="<?php if(!empty($ecom)){echo $ecom;} ?>"><br>
102
+ <input type="text" name="comment"placeholder="コメント" value="<?php if(isset($ecom)){echo $ecom;} ?>"><br>
70
- <input type="text" name="password" placeholder="パスワード"value="<?php if(!empty($epass)){echo $epass;} ?>"><br>
103
+ <input type="text" name="pass" placeholder="パスワード"value="<?php if(isset($epass)){echo $epass;} ?>"><br>
71
- <input type="submit" name="submit"><br><hr>
104
+ <input type="submit" name="submit" value='投稿'><br>
72
105
 
73
106
  <input type="number" name="delete" placeholder="削除対象番号"><br>
74
- <input type="text" name="dpass" placeholder="パスワード">
107
+ <input type="text" name="dpass" placeholder="パスワード"><br>
75
- <input type="submit" name="submit" value="削除"><br><hr>
108
+ <input type="submit" name="submit" value="削除"><br>
76
109
 
77
110
  <input type="number" name="edit" placeholder="編集対象番号"><br>
78
- <input type="text" name="epass" placeholder="パスワード">
111
+ <input type="text" name="epass" placeholder="パスワード"><br>
79
- <input type="submit" name="submit" value="編集"><hr>
112
+ <input type="submit" name="submit" value="編集">
80
113
  </form>
81
114
 
82
- <?php
115
+ <?php
83
- $sql = 'SELECT * FROM keiijban';
116
+ $sql = 'SELECT * FROM keijiban';
84
117
  $stmt = $pdo->query($sql);
85
118
  $results = $stmt->fetchAll();
86
119
  foreach ($results as $row){
@@ -89,11 +122,10 @@
89
122
  echo $row['comment'].' ';
90
123
  echo $row['date'].' ';
91
124
  echo $row['password'].'<br>';
92
- echo '<hr>';
93
125
  }
94
126
  ?>
95
127
 
96
128
  </body>
97
129
  </html>
98
130
  ```
99
- 削除機能のどこが間違っているのか分かりません。よろしくお願いします。
131
+ 編集機能のどこが間違っているのか分かりません。ご教授よろしくお願いします。

1

コードの修正

2021/07/13 12:28

投稿

kiyuu
kiyuu

スコア0

title CHANGED
File without changes
body CHANGED
@@ -11,7 +11,7 @@
11
11
  <html lang=ja>
12
12
  <head>
13
13
  <meta charset="UTF-8">
14
- <title>mission_5-1</title>
14
+ <title>keijiban</title>
15
15
  </head>
16
16
  <body>
17
17