質問編集履歴

3

コードブロックで囲みました。

2017/12/24 11:59

投稿

ak_spy_
ak_spy_

スコア6

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,13 @@
8
8
 
9
9
 
10
10
 
11
+
12
+
13
+
14
+
15
+ ```HTML/PHP
16
+
11
- <html>
17
+ <html>
12
18
 
13
19
  <head>
14
20
 
@@ -178,23 +184,7 @@
178
184
 
179
185
  }
180
186
 
181
- /*delate→echoの流れ
187
+
182
-
183
- explode関数では最初の引数に区切り文字<>、二番目の引数に文字列を与える。
184
-
185
- つまり、$dataは一行を<>で分割した配列
186
-
187
- ex)"花子、太郎"、和夫、隼人"という文字列データがあるとする。
188
-
189
- この場合、文字列"、"で分割すると、4名の名前に分割することになる。"花子"、"太郎"、"和夫"、"隼人"
190
-
191
- ⇒分割された文字列は、戻り値として返される配列の各要素として格納される。
192
-
193
- 配列[0]="花子"、配列[1]="太郎"、配列[2]="和夫"、配列[3]="隼人"
194
-
195
-
196
-
197
- fwriteの前に「namae・commentの入力をつけないとダメ」の条件をつけないと空欄を書き込み続けてしまう*/
198
188
 
199
189
 
200
190
 
@@ -413,3 +403,7 @@
413
403
  </body>
414
404
 
415
405
  </html>
406
+
407
+ ```
408
+
409
+ ```

2

コードを全て記載させて頂きました。

2017/12/24 11:59

投稿

ak_spy_
ak_spy_

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,14 +1,234 @@
1
- 以下コードで簡易掲示板削除・編集機能の実装試みています。
2
-
3
- 削除は問題なく機能しているのですが、編集がうまくきません。(編集内容が反映されません)
4
-
5
- 編集処理ができてないこはわかるのですが、何をどう書けば良いのかがわからない状態です。ご回答頂けると幸いです。
6
-
7
- ※html・phpは質問に関係な部分は省略してりま
8
-
9
- <html>
10
-
11
- <?php
1
+ 以下コードで簡易掲示板に名前・コメント入力・送信後に削除・編集を試みています。削除までは問題なく機能しており、編集内容を入力する用フォームにて該当の番号入力すると元、の内容が編集用のフォーム内に表示されるようになっています。
2
+
3
+ ですが、い内容を変えようと新たな名前・コメントを入力してもその内容が反映されない、といった状態です。
4
+
5
+ php下部の「//以下編集処理」の下からおかしためだ思うのですが、何をどうすれば良いのかがわからない状態です。
6
+
7
+ ご回答頂けると幸です。また、加えまして、編集依頼を下さった方々、更新が遅くな大変申し訳ございせん
8
+
9
+
10
+
11
+ <html>
12
+
13
+ <head>
14
+
15
+ <meta charset="UTF-8">
16
+
17
+ <title>Tell me about yourself</title>
18
+
19
+ </head>
20
+
21
+ <body>
22
+
23
+
24
+
25
+ <h1>name and comment please</h1>
26
+
27
+ <form action="mission_2-5.php" method="post">
28
+
29
+ 名前:<br/>
30
+
31
+ <input type="text" name="namae" size="30"><br/>
32
+
33
+
34
+
35
+ コメント:<br/>
36
+
37
+ <textarea name="comment" colos="30" rows="5"></textarea><br/>
38
+
39
+ <input type="submit" value="登録する"/>
40
+
41
+ <br/>
42
+
43
+ </form>
44
+
45
+
46
+
47
+ <form action="mission_2-5.php" method="post">
48
+
49
+ 削除対象番号:<br/>
50
+
51
+ <input type="text" name="delection" size="30"><br/>
52
+
53
+ <input type="submit" value="削除"/>
54
+
55
+ </form>
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+ <?php
64
+
65
+ //2-2.2-3
66
+
67
+
68
+
69
+ $comment=null;
70
+
71
+ $namae=null;
72
+
73
+
74
+
75
+
76
+
77
+ if (!isset($comment) || !isset($namae)){
78
+
79
+ $comment=$_POST['comment'];
80
+
81
+ $namae=$_POST['namae'];
82
+
83
+ }
84
+
85
+
86
+
87
+
88
+
89
+ $time=date("Y/m/d H:i:s",time());//時間
90
+
91
+
92
+
93
+
94
+
95
+ $filename="mission_2-5.txt";
96
+
97
+
98
+
99
+ $fp=fopen($filename,'a+');
100
+
101
+
102
+
103
+ $file=file($filename);//file関数→ファイルの内容全てを取得し配列に格納する。$filenameを読み込み$fileにパス
104
+
105
+
106
+
107
+ $count=count($file);//ファイルの行数カウント&$countに代入
108
+
109
+
110
+
111
+ $number=explode("<>",$file[$count-1]);
112
+
113
+
114
+
115
+ $next=$number[0]+1;//
116
+
117
+
118
+
119
+ $text=$next."<>".$namae."<>".$comment."<>".$time;//最後の番号+1が次の番号になる
120
+
121
+
122
+
123
+
124
+
125
+ if(isset($_POST['namae']) && isset($_POST['comment'])){
126
+
127
+ fwrite($fp,"$text\n");
128
+
129
+ }
130
+
131
+
132
+
133
+ fclose($fp);
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+ //2-4
142
+
143
+ if(isset($_POST['delection'])){
144
+
145
+
146
+
147
+ $dell=$_POST['delection'];
148
+
149
+ }
150
+
151
+
152
+
153
+
154
+
155
+ if(isset($_POST['delection'])){
156
+
157
+ $fp=fopen($filename,'w+');
158
+
159
+ for($k=0; $k<count($file); ++$k){ //count(要素数えたい配列 , モード),$fileの要素が$kより多いとき→$kに1加える
160
+
161
+ $deldata=explode("<>",$file[$k]);
162
+
163
+
164
+
165
+ if($deldata[0]!=$dell){
166
+
167
+ fwrite($fp,"$file[$k]");
168
+
169
+ }
170
+
171
+ }
172
+
173
+
174
+
175
+ fclose($fp);
176
+
177
+
178
+
179
+ }
180
+
181
+ /*delate→echoの流れ
182
+
183
+ explode関数では最初の引数に区切り文字<>、二番目の引数に文字列を与える。
184
+
185
+ つまり、$dataは一行を<>で分割した配列
186
+
187
+ ex)"花子、太郎"、和夫、隼人"という文字列データがあるとする。
188
+
189
+ この場合、文字列"、"で分割すると、4名の名前に分割することになる。"花子"、"太郎"、"和夫"、"隼人"
190
+
191
+ ⇒分割された文字列は、戻り値として返される配列の各要素として格納される。
192
+
193
+ 配列[0]="花子"、配列[1]="太郎"、配列[2]="和夫"、配列[3]="隼人"
194
+
195
+
196
+
197
+ fwriteの前に「namae・commentの入力をつけないとダメ」の条件をつけないと空欄を書き込み続けてしまう*/
198
+
199
+
200
+
201
+
202
+
203
+ $file = file($filename);
204
+
205
+
206
+
207
+ foreach($file as $text2){ //配列数の分繰り返し処理をする, 配列変数 as 配列変数から取り出した値を格納する変数
208
+
209
+ $text_array = explode("<>",$text2);
210
+
211
+ echo $text_array[0].$text_array[1].$text_array[2].$text_array[3]."<br>";
212
+
213
+ }
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+ //2-5
224
+
225
+
226
+
227
+ //error_reporting(E_ALL);
228
+
229
+ //ini_set('display_errors', 'On');
230
+
231
+
12
232
 
13
233
  $edit_num = $_POST["hensyunumber"];
14
234
 
@@ -24,9 +244,11 @@
24
244
 
25
245
  //編集用フォームに元の内容を表示させる処理
26
246
 
27
- if (isset($_POST['hensyu'])){
247
+ if (isset($_POST['hensyu'])){//編集ボタンが押されたとき(trueのときの処理)
28
-
248
+
249
+
250
+
29
- $fp=fopen($filename,'a+');
251
+ $fp=fopen($filename,'a+');
30
252
 
31
253
 
32
254
 
@@ -34,49 +256,109 @@
34
256
 
35
257
 
36
258
 
37
- $filedata =file( "mission_2-5.txt);
259
+ $filedata =file( "mission_2-5.txt");//ファイルを一行ずつの配列として読み込み、変数への配列化
38
-
39
-
40
-
260
+
261
+
262
+
41
- for($k=0; $k<count($filedata); ++$k){
263
+ for($k=0; $k<count($filedata); ++$k){ //for…"ある条件が成り立っている間"
264
+
265
+ /*count(要素数えたい配列 , モード),$fileの要素が$iより多いとき→$iに1加える
266
+
267
+ 一行目の行数・名前・コメントだけでなく$data[0]が行数、$data[1]が名前…を必ず指定するようにループ処理をする*/
42
268
 
43
269
  $data = explode("<>", "$filedata[$k]");
44
270
 
271
+ //explode関数:文字列を指定した区切り文字によって分割し、配列に格納。第1引数で区切り文字を、第2引数で対象となる文字列を指定
272
+
273
+ $edit_num = $data[0];
274
+
275
+
276
+
277
+ //取り出し用フォームの分岐
278
+
279
+ if($data[0] == $edit_num){//編集番号が$edit_numと一致したら
280
+
281
+
282
+
283
+ $user = $data[1];//編集用フォームに元の内容を表示
284
+
285
+
286
+
287
+ $text = $data[2];//編集用フォームに元の内容を表示
288
+
289
+
290
+
291
+ $hyouzi = $user.$data;
292
+
293
+
294
+
295
+ }else{ //else=falseのときの処理。一致しない時はもとのデータをそのまま書き込み(if~else文)
296
+
297
+ fputs($fp, $filedata);//元の一行をファイルに追記
298
+
299
+ } //if~else終わり
300
+
301
+ } //for終わり
302
+
303
+
304
+
305
+ fclose($fp);
306
+
307
+ }//if終わり
308
+
309
+
310
+
311
+
312
+
313
+ //以下編集処理
314
+
315
+ if (isset($_POST['edit_num'])){//edit_numフォームに入力があるとき
316
+
317
+
318
+
319
+ $file_edit = file("mission_2-5.txt"); //テキストファイルのデータを一行ずつ配列化・保存することにより編集が可能になる
320
+
321
+
322
+
323
+ $fp = fopen("mission_2-5.txt", 'w+');//内容を消して開き、ファイルポインタ取得
324
+
45
325
 
46
326
 
47
- $edit_num = $data[0];
327
+ $edit_num = $_POST['hensyunumber'];
48
-
49
-
50
-
328
+
329
+
330
+
51
- //取り出し用フォームの分岐
331
+ for($l = 0;$l <count($file_edit); ++$l){
332
+
333
+
334
+
52
-
335
+ $editdata = explode("<>",$file_edit[$l]);
336
+
337
+
338
+
53
- if($data[0] == $edit_num){//編集番号が$edit_numと一致したら
339
+ if($editdata[0] == $edit_num){//入力した編集番号と一致するとき
340
+
341
+
342
+
343
+ $user = $editdata[1];
54
344
 
55
345
 
56
346
 
57
- $user = $data[1];
347
+ $text = $editdata[2];
58
-
59
-
60
-
348
+
349
+
350
+
61
- $text = $data[2];//
351
+ $text = $edit_num[0]."<>".$user."<>".$text>"<>".$time;
62
-
63
-
64
-
65
- $hyouzi = $user.$data;
352
+
66
-
67
-
68
-
69
- }else{
353
+
70
-
354
+
71
- fputs($fp, $filedata);
355
+ fputs($fp.$text);
72
-
356
+
357
+
358
+
73
- } //if~else終わり
359
+ }//if終わり
74
-
360
+
75
- } //for終わり
361
+ }//for終わり
76
-
77
-
78
-
79
- fclose($fp);
80
362
 
81
363
  }//if終わり
82
364
 
@@ -84,55 +366,13 @@
84
366
 
85
367
 
86
368
 
87
- //以下編集処理
369
+
88
-
89
- if (isset($_POST['edit_num'])){//edit_numフォームに入力があるとき
370
+
90
-
91
-
92
-
93
- $file_edit = file("mission_2-5.txt");
371
+
94
-
95
-
96
-
97
- $fp = fopen("mission_2-5.txt", 'w+');
372
+
98
-
99
-
100
-
101
- $edit_num = $_POST['hensyunumber'];
373
+
102
-
103
-
104
-
105
- for($l = 0;$l <count($file_edit); ++$l){
374
+
106
-
107
-
108
-
109
- $editdata = explode("<>",$file_edit[$l]);
375
+
110
-
111
-
112
-
113
- if($editdata[0] == $edit_num){//入力した編集番号と一致するとき
114
-
115
-
116
-
117
- $user = $editdata[1];
118
-
119
-
120
-
121
- $text = $editdata[2];
122
-
123
-
124
-
125
- $text = $edit_num[0]."<>".$user."<>".$text>"<>".$time;
126
-
127
-
128
-
129
- fputs($fp.$text);
130
-
131
-
132
-
133
- }
134
-
135
- }
136
376
 
137
377
  ?>
138
378
 
@@ -168,6 +408,8 @@
168
408
 
169
409
 
170
410
 
411
+
412
+
171
413
  </body>
172
414
 
173
415
  </html>

1

2017/12/23 15:32

投稿

ak_spy_
ak_spy_

スコア6

test CHANGED
File without changes
test CHANGED
@@ -4,209 +4,11 @@
4
4
 
5
5
  編集処理ができていないことはわかるのですが、何をどう書けば良いのかがわからない状態です。ご回答頂けると幸いです。
6
6
 
7
+ ※html・phpは質問に関係ない部分は省略しております。
7
8
 
9
+ <html>
8
10
 
9
- <html>
10
-
11
- <head>
12
-
13
- <meta charset="UTF-8">
14
-
15
- <title>Tell me about yourself</title>
16
-
17
- </head>
18
-
19
- <body>
20
-
21
-
22
-
23
- <h1>name and comment please</h1>
24
-
25
- <form action="mission_2-5.php" method="post">
26
-
27
- 名前:<br/>
28
-
29
- <input type="text" name="namae" size="30"><br/>
30
-
31
-
32
-
33
- コメント:<br/>
34
-
35
- <textarea name="comment" colos="30" rows="5"></textarea><br/>
36
-
37
- <input type="submit" value="登録する"/>
38
-
39
- <br/>
40
-
41
- </form>
42
-
43
-
44
-
45
- <form action="mission_2-5.php" method="post">
46
-
47
- 削除対象番号:<br/>
48
-
49
- <input type="text" name="delection" size="30"><br/>
50
-
51
- <input type="submit" value="削除"/>
52
-
53
- </form>
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
- <?php
11
+ <?php
62
-
63
- //2-2.2-3
64
-
65
-
66
-
67
- $comment=null;
68
-
69
- $namae=null;
70
-
71
-
72
-
73
-
74
-
75
- if (!isset($comment) || !isset($namae)){
76
-
77
- $comment=$_POST['comment'];
78
-
79
- $namae=$_POST['namae'];
80
-
81
- }
82
-
83
-
84
-
85
-
86
-
87
- $time=date("Y/m/d H:i:s",time());//時間
88
-
89
-
90
-
91
-
92
-
93
- $filename="mission_2-5.txt";
94
-
95
-
96
-
97
- $fp=fopen($filename,'a+');
98
-
99
-
100
-
101
- $file=file($filename);//file関数→ファイルの内容全てを取得し配列に格納する。$filenameを読み込み$fileにパス
102
-
103
-
104
-
105
- $count=count($file);//ファイルの行数カウント&$countに代入
106
-
107
-
108
-
109
- $number=explode("<>",$file[$count-1]);
110
-
111
-
112
-
113
- $next=$number[0]+1;//
114
-
115
-
116
-
117
- $text=$next."<>".$namae."<>".$comment."<>".$time;//最後の番号+1が次の番号になる
118
-
119
-
120
-
121
-
122
-
123
- if(isset($_POST['namae']) && isset($_POST['comment'])){
124
-
125
- fwrite($fp,"$text\n");
126
-
127
- }
128
-
129
-
130
-
131
- fclose($fp);
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
- //2-4
140
-
141
- if(isset($_POST['delection'])){
142
-
143
-
144
-
145
- $dell=$_POST['delection'];
146
-
147
- }
148
-
149
-
150
-
151
-
152
-
153
- if(isset($_POST['delection'])){
154
-
155
- $fp=fopen($filename,'w+');
156
-
157
- for($k=0; $k<count($file); ++$k){ //count(要素数えたい配列 , モード),$fileの要素が$kより多いとき→$kに1加える
158
-
159
- $deldata=explode("<>",$file[$k]);
160
-
161
-
162
-
163
- if($deldata[0]!=$dell){
164
-
165
- fwrite($fp,"$file[$k]");
166
-
167
- }
168
-
169
- }
170
-
171
-
172
-
173
- fclose($fp);
174
-
175
-
176
-
177
- }
178
-
179
-
180
-
181
- $file = file($filename);
182
-
183
-
184
-
185
- foreach($file as $text2){
186
-
187
- $text_array = explode("<>",$text2);
188
-
189
- echo $text_array[0].$text_array[1].$text_array[2].$text_array[3]."<br>";
190
-
191
- }
192
-
193
-
194
-
195
-
196
-
197
-
198
-
199
-
200
-
201
- //2-5
202
-
203
-
204
-
205
- //error_reporting(E_ALL);
206
-
207
- //ini_set('display_errors', 'On');
208
-
209
-
210
12
 
211
13
  $edit_num = $_POST["hensyunumber"];
212
14
 
@@ -222,11 +24,9 @@
222
24
 
223
25
  //編集用フォームに元の内容を表示させる処理
224
26
 
225
- if (isset($_POST['hensyu'])){//編集ボタンが押されたとき(trueのときの処理)
27
+ if (isset($_POST['hensyu'])){
226
28
 
227
-
228
-
229
- $fp=fopen($filename,'a+');
29
+ $fp=fopen($filename,'a+');
230
30
 
231
31
 
232
32
 
@@ -326,27 +126,13 @@
326
126
 
327
127
 
328
128
 
329
- fputs($fp.$text);
129
+ fputs($fp.$text);
330
130
 
331
-
131
+
332
132
 
333
- }//if終わり
133
+ }
334
134
 
335
- }//for終わり
336
-
337
- }//if終わり
135
+ }
338
-
339
-
340
-
341
-
342
-
343
-
344
-
345
-
346
-
347
-
348
-
349
-
350
136
 
351
137
  ?>
352
138
 
@@ -382,8 +168,6 @@
382
168
 
383
169
 
384
170
 
385
-
386
-
387
171
  </body>
388
172
 
389
173
  </html>