質問編集履歴
3
コードブロックで囲みました。
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
コードを全て記載させて頂きました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,9 +1,119 @@
|
|
1
|
-
以下コードで簡易掲示板
|
1
|
+
以下のコードで簡易掲示板に名前・コメント入力・送信後に削除・編集を試みています。削除までは問題なく機能しており、編集内容を入力する用のフォームにて該当の番号を入力すると元、の内容が編集用のフォーム内に表示されるようになっています。
|
2
|
-
|
2
|
+
ですが、いざ内容を変えようと新たな名前・コメントを入力してもその内容が反映されない、といった状態です。
|
3
|
-
編集処理が
|
3
|
+
php下部の「//以下編集処理」の下からがおかしいためだと思うのですが、何をどうすれば良いのかがわからない状態です。
|
4
|
-
|
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
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'])){
|
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
|
-
|
67
|
+
}
|
168
|
-
}//for終わり
|
169
|
-
}
|
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>
|