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

質問編集履歴

3

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

2017/12/24 11:59

投稿

ak_spy_
ak_spy_

スコア6

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,10 @@
3
3
  php下部の「//以下編集処理」の下からがおかしいためだと思うのですが、何をどうすれば良いのかがわからない状態です。
4
4
  ご回答頂けると幸いです。また、加えまして、編集依頼を下さった方々、更新が遅くなり大変申し訳ございません。
5
5
 
6
+
7
+
8
+ ```HTML/PHP
6
- <html>
9
+ <html>
7
10
  <head>
8
11
  <meta charset="UTF-8">
9
12
  <title>Tell me about yourself</title>
@@ -88,17 +91,9 @@
88
91
  fclose($fp);
89
92
 
90
93
  }
91
- /*delate→echoの流れ
92
- explode関数では最初の引数に区切り文字<>、二番目の引数に文字列を与える。
93
- つまり、$dataは一行を<>で分割した配列
94
- ex)"花子、太郎"、和夫、隼人"という文字列データがあるとする。
95
- この場合、文字列"、"で分割すると、4名の名前に分割することになる。"花子"、"太郎"、"和夫"、"隼人"
96
- ⇒分割された文字列は、戻り値として返される配列の各要素として格納される。
97
- 配列[0]="花子"、配列[1]="太郎"、配列[2]="和夫"、配列[3]="隼人"
98
-
99
- fwriteの前に「namae・commentの入力をつけないとダメ」の条件をつけないと空欄を書き込み続けてしまう*/
100
94
 
101
95
 
96
+
102
97
  $file = file($filename);
103
98
 
104
99
  foreach($file as $text2){ //配列数の分繰り返し処理をする, 配列変数 as 配列変数から取り出した値を格納する変数
@@ -205,4 +200,6 @@
205
200
 
206
201
 
207
202
  </body>
208
- </html>
203
+ </html>
204
+ ```
205
+ ```

2

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

2017/12/24 11:59

投稿

ak_spy_
ak_spy_

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,119 @@
1
- 以下コードで簡易掲示板削除・編集機能の実装試みています。
1
+ 以下コードで簡易掲示板に名前・コメント入力・送信後に削除・編集を試みています。削除までは問題なく機能しており、編集内容を入力する用フォームにて該当の番号入力すると元、の内容が編集用のフォーム内に表示されるようになっています。
2
- 削除は問題なく機能しているのですが、編集がうまくきません。(編集内容が反映されません)
2
+ ですが、い内容を変えようと新たな名前・コメントを入力してもその内容が反映されない、といった状態です。
3
- 編集処理ができてないこはわかるのですが、何をどう書けば良いのかがわからない状態です。ご回答頂けると幸いです。
3
+ php下部の「//以下編集処理」の下からおかしためだ思うのですが、何をどうすれば良いのかがわからない状態です。
4
- ※html・phpは質問に関係な部分は省略してりま
4
+ ご回答頂けると幸です。また、加えまして、編集依頼を下さった方々、更新が遅くな大変申し訳ございせん
5
+
5
- <html>
6
+ <html>
7
+ <head>
8
+ <meta charset="UTF-8">
9
+ <title>Tell me about yourself</title>
10
+ </head>
11
+ <body>
12
+
13
+ <h1>name and comment please</h1>
14
+ <form action="mission_2-5.php" method="post">
15
+ 名前:<br/>
16
+ <input type="text" name="namae" size="30"><br/>
17
+
18
+ コメント:<br/>
19
+ <textarea name="comment" colos="30" rows="5"></textarea><br/>
20
+ <input type="submit" value="登録する"/>
21
+ <br/>
22
+ </form>
23
+
24
+ <form action="mission_2-5.php" method="post">
25
+ 削除対象番号:<br/>
26
+ <input type="text" name="delection" size="30"><br/>
27
+ <input type="submit" value="削除"/>
28
+ </form>
29
+
30
+
31
+
6
- <?php
32
+ <?php
33
+ //2-2.2-3
34
+
35
+ $comment=null;
36
+ $namae=null;
37
+
38
+
39
+ if (!isset($comment) || !isset($namae)){
40
+ $comment=$_POST['comment'];
41
+ $namae=$_POST['namae'];
42
+ }
43
+
44
+
45
+ $time=date("Y/m/d H:i:s",time());//時間
46
+
47
+
48
+ $filename="mission_2-5.txt";
49
+
50
+ $fp=fopen($filename,'a+');
51
+
52
+ $file=file($filename);//file関数→ファイルの内容全てを取得し配列に格納する。$filenameを読み込み$fileにパス
53
+
54
+ $count=count($file);//ファイルの行数カウント&$countに代入
55
+
56
+ $number=explode("<>",$file[$count-1]);
57
+
58
+ $next=$number[0]+1;//
59
+
60
+ $text=$next."<>".$namae."<>".$comment."<>".$time;//最後の番号+1が次の番号になる
61
+
62
+
63
+ if(isset($_POST['namae']) && isset($_POST['comment'])){
64
+ fwrite($fp,"$text\n");
65
+ }
66
+
67
+ fclose($fp);
68
+
69
+
70
+
71
+ //2-4
72
+ if(isset($_POST['delection'])){
73
+
74
+ $dell=$_POST['delection'];
75
+ }
76
+
77
+
78
+ if(isset($_POST['delection'])){
79
+ $fp=fopen($filename,'w+');
80
+ for($k=0; $k<count($file); ++$k){ //count(要素数えたい配列 , モード),$fileの要素が$kより多いとき→$kに1加える
81
+ $deldata=explode("<>",$file[$k]);
82
+
83
+ if($deldata[0]!=$dell){
84
+ fwrite($fp,"$file[$k]");
85
+ }
86
+ }
87
+
88
+ fclose($fp);
89
+
90
+ }
91
+ /*delate→echoの流れ
92
+ explode関数では最初の引数に区切り文字<>、二番目の引数に文字列を与える。
93
+ つまり、$dataは一行を<>で分割した配列
94
+ ex)"花子、太郎"、和夫、隼人"という文字列データがあるとする。
95
+ この場合、文字列"、"で分割すると、4名の名前に分割することになる。"花子"、"太郎"、"和夫"、"隼人"
96
+ ⇒分割された文字列は、戻り値として返される配列の各要素として格納される。
97
+ 配列[0]="花子"、配列[1]="太郎"、配列[2]="和夫"、配列[3]="隼人"
98
+
99
+ fwriteの前に「namae・commentの入力をつけないとダメ」の条件をつけないと空欄を書き込み続けてしまう*/
100
+
101
+
102
+ $file = file($filename);
103
+
104
+ foreach($file as $text2){ //配列数の分繰り返し処理をする, 配列変数 as 配列変数から取り出した値を格納する変数
105
+ $text_array = explode("<>",$text2);
106
+ echo $text_array[0].$text_array[1].$text_array[2].$text_array[3]."<br>";
107
+ }
108
+
109
+
110
+
111
+
112
+ //2-5
113
+
114
+ //error_reporting(E_ALL);
115
+ //ini_set('display_errors', 'On');
116
+
7
117
  $edit_num = $_POST["hensyunumber"];
8
118
  $user = "";
9
119
  $text = "";
@@ -11,29 +121,32 @@
11
121
 
12
122
 
13
123
  //編集用フォームに元の内容を表示させる処理
14
- if (isset($_POST['hensyu'])){
124
+ if (isset($_POST['hensyu'])){//編集ボタンが押されたとき(trueのときの処理)
15
- $fp=fopen($filename,'a+');
16
125
 
126
+ $fp=fopen($filename,'a+');
127
+
17
128
  $edit_num = $_POST['hensyunumber'];
18
129
 
19
- $filedata =file( "mission_2-5.txt);
130
+ $filedata =file( "mission_2-5.txt");//ファイルを一行ずつの配列として読み込み、変数への配列化
20
131
 
21
- for($k=0; $k<count($filedata); ++$k){
132
+ for($k=0; $k<count($filedata); ++$k){ //for…"ある条件が成り立っている間"
133
+ /*count(要素数えたい配列 , モード),$fileの要素が$iより多いとき→$iに1加える
134
+ 一行目の行数・名前・コメントだけでなく$data[0]が行数、$data[1]が名前…を必ず指定するようにループ処理をする*/
22
135
  $data = explode("<>", "$filedata[$k]");
23
-
136
+ //explode関数:文字列を指定した区切り文字によって分割し、配列に格納。第1引数で区切り文字を、第2引数で対象となる文字列を指定
24
137
  $edit_num = $data[0];
25
138
 
26
139
  //取り出し用フォームの分岐
27
140
  if($data[0] == $edit_num){//編集番号が$edit_numと一致したら
28
141
 
29
- $user = $data[1];
142
+ $user = $data[1];//編集用フォームに元の内容を表示
30
143
 
31
- $text = $data[2];//
144
+ $text = $data[2];//編集用フォームに元の内容を表示
32
145
 
33
146
  $hyouzi = $user.$data;
34
147
 
35
- }else{
148
+ }else{ //else=falseのときの処理。一致しない時はもとのデータをそのまま書き込み(if~else文)
36
- fputs($fp, $filedata);
149
+ fputs($fp, $filedata);//元の一行をファイルに追記
37
150
  } //if~else終わり
38
151
  } //for終わり
39
152
 
@@ -44,9 +157,9 @@
44
157
  //以下編集処理
45
158
  if (isset($_POST['edit_num'])){//edit_numフォームに入力があるとき
46
159
 
47
- $file_edit = file("mission_2-5.txt");
160
+ $file_edit = file("mission_2-5.txt"); //テキストファイルのデータを一行ずつ配列化・保存することにより編集が可能になる
48
-
161
+
49
- $fp = fopen("mission_2-5.txt", 'w+');
162
+ $fp = fopen("mission_2-5.txt", 'w+');//内容を消して開き、ファイルポインタ取得
50
163
 
51
164
  $edit_num = $_POST['hensyunumber'];
52
165
 
@@ -62,10 +175,17 @@
62
175
 
63
176
  $text = $edit_num[0]."<>".$user."<>".$text>"<>".$time;
64
177
 
65
- fputs($fp.$text);
178
+ fputs($fp.$text);
66
-
179
+
67
- }
180
+ }//if終わり
181
+ }//for終わり
68
- }
182
+ }//if終わり
183
+
184
+
185
+
186
+
187
+
188
+
69
189
  ?>
70
190
 
71
191
 
@@ -83,5 +203,6 @@
83
203
  <button type = "submit"> 送信</button>
84
204
  </form>
85
205
 
206
+
86
207
  </body>
87
208
  </html>

1

2017/12/23 15:32

投稿

ak_spy_
ak_spy_

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,108 +1,9 @@
1
1
  以下コードで簡易掲示板の削除・編集機能の実装を試みています。
2
2
  削除は問題なく機能しているのですが、編集がうまくいきません。(編集内容が反映されません)
3
3
  編集処理ができていないことはわかるのですが、何をどう書けば良いのかがわからない状態です。ご回答頂けると幸いです。
4
-
4
+ ※html・phpは質問に関係ない部分は省略しております。
5
- <html>
5
+ <html>
6
- <head>
7
- <meta charset="UTF-8">
8
- <title>Tell me about yourself</title>
9
- </head>
10
- <body>
11
-
12
- <h1>name and comment please</h1>
13
- <form action="mission_2-5.php" method="post">
14
- 名前:<br/>
15
- <input type="text" name="namae" size="30"><br/>
16
-
17
- コメント:<br/>
18
- <textarea name="comment" colos="30" rows="5"></textarea><br/>
19
- <input type="submit" value="登録する"/>
20
- <br/>
21
- </form>
22
-
23
- <form action="mission_2-5.php" method="post">
24
- 削除対象番号:<br/>
25
- <input type="text" name="delection" size="30"><br/>
26
- <input type="submit" value="削除"/>
27
- </form>
28
-
29
-
30
-
31
- <?php
6
+ <?php
32
- //2-2.2-3
33
-
34
- $comment=null;
35
- $namae=null;
36
-
37
-
38
- if (!isset($comment) || !isset($namae)){
39
- $comment=$_POST['comment'];
40
- $namae=$_POST['namae'];
41
- }
42
-
43
-
44
- $time=date("Y/m/d H:i:s",time());//時間
45
-
46
-
47
- $filename="mission_2-5.txt";
48
-
49
- $fp=fopen($filename,'a+');
50
-
51
- $file=file($filename);//file関数→ファイルの内容全てを取得し配列に格納する。$filenameを読み込み$fileにパス
52
-
53
- $count=count($file);//ファイルの行数カウント&$countに代入
54
-
55
- $number=explode("<>",$file[$count-1]);
56
-
57
- $next=$number[0]+1;//
58
-
59
- $text=$next."<>".$namae."<>".$comment."<>".$time;//最後の番号+1が次の番号になる
60
-
61
-
62
- if(isset($_POST['namae']) && isset($_POST['comment'])){
63
- fwrite($fp,"$text\n");
64
- }
65
-
66
- fclose($fp);
67
-
68
-
69
-
70
- //2-4
71
- if(isset($_POST['delection'])){
72
-
73
- $dell=$_POST['delection'];
74
- }
75
-
76
-
77
- if(isset($_POST['delection'])){
78
- $fp=fopen($filename,'w+');
79
- for($k=0; $k<count($file); ++$k){ //count(要素数えたい配列 , モード),$fileの要素が$kより多いとき→$kに1加える
80
- $deldata=explode("<>",$file[$k]);
81
-
82
- if($deldata[0]!=$dell){
83
- fwrite($fp,"$file[$k]");
84
- }
85
- }
86
-
87
- fclose($fp);
88
-
89
- }
90
-
91
- $file = file($filename);
92
-
93
- foreach($file as $text2){
94
- $text_array = explode("<>",$text2);
95
- echo $text_array[0].$text_array[1].$text_array[2].$text_array[3]."<br>";
96
- }
97
-
98
-
99
-
100
-
101
- //2-5
102
-
103
- //error_reporting(E_ALL);
104
- //ini_set('display_errors', 'On');
105
-
106
7
  $edit_num = $_POST["hensyunumber"];
107
8
  $user = "";
108
9
  $text = "";
@@ -110,10 +11,9 @@
110
11
 
111
12
 
112
13
  //編集用フォームに元の内容を表示させる処理
113
- if (isset($_POST['hensyu'])){//編集ボタンが押されたとき(trueのときの処理)
14
+ if (isset($_POST['hensyu'])){
15
+ $fp=fopen($filename,'a+');
114
16
 
115
- $fp=fopen($filename,'a+');
116
-
117
17
  $edit_num = $_POST['hensyunumber'];
118
18
 
119
19
  $filedata =file( "mission_2-5.txt);
@@ -162,17 +62,10 @@
162
62
 
163
63
  $text = $edit_num[0]."<>".$user."<>".$text>"<>".$time;
164
64
 
165
- fputs($fp.$text);
65
+ fputs($fp.$text);
166
-
66
+
167
- }//if終わり
67
+ }
168
- }//for終わり
169
- }//if終わり
68
+ }
170
-
171
-
172
-
173
-
174
-
175
-
176
69
  ?>
177
70
 
178
71
 
@@ -190,6 +83,5 @@
190
83
  <button type = "submit"> 送信</button>
191
84
  </form>
192
85
 
193
-
194
86
  </body>
195
87
  </html>