回答編集履歴

1

加筆修正

2020/01/14 10:16

投稿

退会済みユーザー
test CHANGED
@@ -51,3 +51,231 @@
51
51
  ```
52
52
 
53
53
  とすることで回避できます。(行単位でフォーム生成)
54
+
55
+
56
+
57
+ ---
58
+
59
+
60
+
61
+ ちなみに、勝手にアレンジしたんだが、
62
+
63
+ チェックボックスを使って一度に複数個削除できるようにしたバージョン:
64
+
65
+ ```php
66
+
67
+ <?php
68
+
69
+
70
+
71
+ //保存ファイル名(PHPではファイル名は変数に保存する)
72
+
73
+ //define('SAVE_NAME', 'memo.txt');
74
+
75
+ $FILE = '235077_todo.txt';
76
+
77
+
78
+
79
+ //ユニークなIDを生成(数字とアルファベット13文字)
80
+
81
+ $id = uniqid('UNIQ_');
82
+
83
+
84
+
85
+ //タイムゾーン設定
86
+
87
+ date_default_timezone_set('Japan');
88
+
89
+ //日時(年/月/日/ 時:分)
90
+
91
+ $date = date('Y/m/d H:i');
92
+
93
+
94
+
95
+ //テキスト
96
+
97
+ $text = '';
98
+
99
+
100
+
101
+ //一回分の投稿の情報
102
+
103
+ $DATA = [];
104
+
105
+
106
+
107
+ //全ての投稿
108
+
109
+ $BOARD= [];
110
+
111
+
112
+
113
+ if (file_exists($FILE)) {
114
+
115
+ //配列状態のファイルを読み込む
116
+
117
+ $BOARD = json_decode(file_get_contents($FILE));
118
+
119
+ }
120
+
121
+
122
+
123
+ if ($_SERVER['REQUEST_METHOD'] === 'POST'){
124
+
125
+ //投稿ボタンが押された場合
126
+
127
+ if (!empty($_POST['txt'])) {
128
+
129
+
130
+
131
+ //$textにリクエストパラメーターを代入
132
+
133
+ $text = $_POST['txt'];
134
+
135
+ //新規データ
136
+
137
+ $DATA = [$id, $date, $text];
138
+
139
+ //新規データを全体配列に代入
140
+
141
+ $BOARD[] = $DATA;
142
+
143
+ //全体配列をファイルに保存
144
+
145
+ file_put_contents($FILE, json_encode($BOARD));
146
+
147
+
148
+
149
+ //削除ボタンが押された場合
150
+
151
+ } elseif (isset($_POST['del'])) {
152
+
153
+
154
+
155
+ $NewBOARD = [];
156
+
157
+
158
+
159
+ foreach((array)$BOARD as $DATA){
160
+
161
+ $flag = FALSE;
162
+
163
+ foreach ($_POST['del'] as $del) {
164
+
165
+ if ($DATA[0] === $del) {
166
+
167
+ $flag = TRUE;
168
+
169
+ break;
170
+
171
+ }
172
+
173
+ }
174
+
175
+ if ($flag === FALSE) {
176
+
177
+ $NewBOARD[] = $DATA;
178
+
179
+ }
180
+
181
+ }
182
+
183
+ file_put_contents($FILE, json_encode($NewBOARD));
184
+
185
+ }
186
+
187
+
188
+
189
+ //指定したページにリダイレクト
190
+
191
+ header('Location: '.$_SERVER['SCRIPT_NAME']);
192
+
193
+ exit;
194
+
195
+ }
196
+
197
+ ?>
198
+
199
+ <!DOCTYPE html>
200
+
201
+ <html lang="ja">
202
+
203
+ <head>
204
+
205
+ <title>ToDoアプリ</title>
206
+
207
+ <link href="css/todo.css" rel="stylesheet">
208
+
209
+ </head>
210
+
211
+ <body>
212
+
213
+
214
+
215
+ <h1>ToDoリスト</h1>
216
+
217
+
218
+
219
+ <form method="POST">
220
+
221
+ <input type="text" name="txt">
222
+
223
+ <input type="submit" value="投稿">
224
+
225
+ </form>
226
+
227
+
228
+
229
+ <form method="POST">
230
+
231
+ <table>
232
+
233
+ <?php foreach((array)$BOARD as $DATA): ?>
234
+
235
+ <tr>
236
+
237
+ <td class="c1">
238
+
239
+ <input type="checkbox" name="del[]" value="<?php echo $DATA[0]; ?>" />
240
+
241
+ </td>
242
+
243
+ <td class="c2">
244
+
245
+ <?php echo $DATA[2]; ?>
246
+
247
+ </td>
248
+
249
+ <td class="c3">
250
+
251
+ <?php echo $DATA[1]; ?>
252
+
253
+ </td>
254
+
255
+ </tr>
256
+
257
+ <?php endforeach; ?>
258
+
259
+ <tr>
260
+
261
+ <td class="c3" colspan="3">
262
+
263
+ <input type="submit" value="削除">
264
+
265
+ </td>
266
+
267
+ </tr>
268
+
269
+ </table>
270
+
271
+ </form>
272
+
273
+
274
+
275
+ </body>
276
+
277
+ </html>
278
+
279
+ ```
280
+
281
+ (データファイル名は他の質問をかぶらないように変更してあるけども。)