回答編集履歴

1

追記

2016/12/22 02:19

投稿

yambejp
yambejp

スコア114814

test CHANGED
@@ -25,3 +25,141 @@
25
25
  のいずれかが一般的です。
26
26
 
27
27
  またまとめて削除をするような場合はチェックボックスを利用するのも有効です
28
+
29
+
30
+
31
+ # 削除サンプル
32
+
33
+ 以下で、挙動確認してください
34
+
35
+ 各行にformをおいてもいいですが、今回のケースならまとめてformに入れればいいような気がします。
36
+
37
+ とりあえずどういうデータが流れているか確認するように$sqlを表示してデータをprint_r()させています
38
+
39
+ 実際にはその後ろのコメントアウトを外せば削除が実行されます
40
+
41
+
42
+
43
+ なおテスト用にチェックボックスで削除する方法も末尾に提示しておきました
44
+
45
+ (今回は決め打ちでid=1,2,3としてあります)
46
+
47
+
48
+
49
+ ```PHP
50
+
51
+ <form method="POST">
52
+
53
+ <input type="text" name="name" placeholder="名前"><br>
54
+
55
+ <input type="text" name="comment" placeholder="コメント">
56
+
57
+ <input type="hidden" name="otp" value="<?PHP print md5(microtime());?>">
58
+
59
+ <input type="submit" value="投稿">
60
+
61
+ </form>
62
+
63
+ <form method="POST">
64
+
65
+ <?php
66
+
67
+ ini_set( 'display_errors', 1 );
68
+
69
+ $otp = filter_input(INPUT_POST,"otp");
70
+
71
+ $name = filter_input(INPUT_POST,"name");
72
+
73
+ $comment = filter_input(INPUT_POST,"comment");
74
+
75
+ $del = filter_input(INPUT_POST,"del",FILTER_DEFAULT,["flags"=>FILTER_REQUIRE_ARRAY]);
76
+
77
+ try {
78
+
79
+ $pdo = new PDO($dsn, $user, $password);
80
+
81
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
82
+
83
+ $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
84
+
85
+ if(!is_null($otp)){
86
+
87
+ $sql = "INSERT INTO XXX (name, comment,otp) VALUES (?,?,?)";
88
+
89
+ $stm = $pdo->prepare($sql);
90
+
91
+ $data=[$name,$comment,$otp];
92
+
93
+ $stm->execute($data);
94
+
95
+ }
96
+
97
+ if(is_array($del)){
98
+
99
+ $data=array_keys($del);
100
+
101
+ $id_list=implode(",",array_fill(0,count($data),"?"));
102
+
103
+ $sql = "DELETE FROM XXX WHERE id in ({$id_list})";
104
+
105
+ print $sql;
106
+
107
+ print_r($data);
108
+
109
+ //$stm = $pdo->prepare($sql);
110
+
111
+ //$stm->execute($data);
112
+
113
+ }
114
+
115
+ $sql = "SELECT * FROM XXX ORDER BY id DESC LIMIT 10";
116
+
117
+ $stm = $pdo->query($sql);
118
+
119
+ $result = $stm->fetchAll();
120
+
121
+ foreach ($result as $row) {
122
+
123
+ echo "<div>";
124
+
125
+ echo $row['id'].")";
126
+
127
+ echo htmlspecialchars($row['name']);
128
+
129
+ echo htmlspecialchars($row['comment']);
130
+
131
+ echo "<input type='submit' name='del[{$row['id']}]' value='del'>";
132
+
133
+ echo "</div>";
134
+
135
+ }
136
+
137
+ } catch (Exception $e) {
138
+
139
+ echo 'エラーがありました。<br>';
140
+
141
+ echo $e->getMessage();
142
+
143
+ }
144
+
145
+ ?>
146
+
147
+ </form>
148
+
149
+ <form method="POST">
150
+
151
+ <input type="checkbox" name="del[1]" value="1">1
152
+
153
+ <input type="checkbox" name="del[2]" value="1">2
154
+
155
+ <input type="checkbox" name="del[3]" value="1">3
156
+
157
+ <input type="submit" value="test">
158
+
159
+ </form>
160
+
161
+
162
+
163
+ </body>
164
+
165
+ ```