回答編集履歴

5

修正

2017/08/25 02:06

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -16,11 +16,11 @@
16
16
 
17
17
  $strが最後に毎回fwriteで書き込まれているものと思われます。そもそもの作りを見直したほうが良いでしょう。
18
18
 
19
+ - 名前・コメントが未入力の場合のチェックがないため、何もなしで投稿した際に正しく追記されない(前の投稿の末尾に番号だけ追記される)
20
+
19
21
  - 現状だと「HTML出力」→「削除」→「投稿書き込み」としているため、「削除を実行したものの削除直後は削除したはずのコメントが表示される(ページを読み直すと表示はされない)」という現象が起きるはずです。
20
22
 
21
23
  「$_POST受け取って投稿書き込み or 削除の処理」→「最新のコメント取得」→「HTML表示(中にコメント展開)」とした方が良いです。
22
-
23
- - 名前・コメントが未入力の場合のチェックがないため、何もなしで投稿した際に正しく追記されない
24
24
 
25
25
  せっかく投稿と削除のformをわけるところまで出来ているので、下記のようにすることで読みやすく、メンテナンスもしやすいソースとなるはずです。
26
26
 

4

修正(入力チェックなど)

2017/08/25 02:06

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -20,6 +20,8 @@
20
20
 
21
21
  「$_POST受け取って投稿書き込み or 削除の処理」→「最新のコメント取得」→「HTML表示(中にコメント展開)」とした方が良いです。
22
22
 
23
+ - 名前・コメントが未入力の場合のチェックがないため、何もなしで投稿した際に正しく追記されない
24
+
23
25
  せっかく投稿と削除のformをわけるところまで出来ているので、下記のようにすることで読みやすく、メンテナンスもしやすいソースとなるはずです。
24
26
 
25
27
  ※簡略ソースのためポイントのみ記述しています
@@ -38,15 +40,25 @@
38
40
 
39
41
  //送信されたフォームにより処理を分岐
40
42
 
43
+ $error_name = null;
44
+
45
+ $error_comment = null;
46
+
47
+ $error_delete_no = null;
48
+
41
49
  switch($_POST["mode"]){
42
50
 
43
51
  case "add":
52
+
53
+ //名前・コメント未入力のチェック
44
54
 
45
55
  //投稿追加処理
46
56
 
47
57
  break;
48
58
 
49
59
  case "delete":
60
+
61
+ //行番号未入力&数字じゃない場合のチェック
50
62
 
51
63
  //投稿削除処理
52
64
 
@@ -104,9 +116,9 @@
104
116
 
105
117
  <form action="" method="post">
106
118
 
107
- 名前<input type="text" name="name" ><br />
119
+ 名前<input type="text" name="name" ><?php echo $error_name ?><br />
108
120
 
109
- コメント<input type="text" name="comment"><br />
121
+ コメント<input type="text" name="comment"><?php echo $error_comment ?><br />
110
122
 
111
123
  <br />
112
124
 
@@ -118,7 +130,7 @@
118
130
 
119
131
  <form action="" method="POST">
120
132
 
121
- 削除対象番号<input type="text" name="deleteNo">
133
+ 削除対象番号<input type="text" name="deleteNo"> <?php echo $error_delete_no ?>
122
134
 
123
135
  <input type="submit" name="delete" value="削除">
124
136
 

3

修正

2017/08/25 02:05

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  ```PHP
28
28
 
29
- <?
29
+ <?php
30
30
 
31
31
  $filemei = 'keijiban.txt'; //最初に定義しておき他の処理で利用する
32
32
 

2

修正

2017/08/25 01:41

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -102,7 +102,7 @@
102
102
 
103
103
  ~~
104
104
 
105
- <form action="keijiban.php" method="post">
105
+ <form action="" method="post">
106
106
 
107
107
  名前<input type="text" name="name" ><br />
108
108
 

1

修正

2017/08/25 01:38

投稿

m.ts10806
m.ts10806

スコア80852

test CHANGED
@@ -5,6 +5,8 @@
5
5
 
6
6
 
7
7
  他何点か気づき:
8
+
9
+ - 投稿保存しているファイル名変数$filemeiを定義しているのに直にファイル名を書いているところが散見され、もったいない。
8
10
 
9
11
  - 提示のソースコードでは変数・配列のキーの未定義エラーが大量に出ると思います。
10
12
 
@@ -14,9 +16,9 @@
14
16
 
15
17
  $strが最後に毎回fwriteで書き込まれているものと思われます。そもそもの作りを見直したほうが良いでしょう。
16
18
 
17
- - 現状だと「HTML出力」→「削除」→「投稿書き込み」としているため、「削除を実行したものの削除したはずのコメントが表示される」という現象が起きるはずです。
19
+ - 現状だと「HTML出力」→「削除」→「投稿書き込み」としているため、「削除を実行したものの削除直後は削除したはずのコメントが表示される(ページを読み直すと表示はされない)」という現象が起きるはずです。
18
20
 
19
- 「$_POST受け取って書き込みまたは削除の処理」→最新のコメント取得→HTML表示(中にコメント展開)とした方が良いです。
21
+ 「$_POST受け取って投稿書き込み or 削除の処理」→最新のコメント取得HTML表示(中にコメント展開)とした方が良いです。
20
22
 
21
23
  せっかく投稿と削除のformをわけるところまで出来ているので、下記のようにすることで読みやすく、メンテナンスもしやすいソースとなるはずです。
22
24
 
@@ -60,7 +62,9 @@
60
62
 
61
63
  //全てのコメントを変数で受け取る
62
64
 
65
+ $comment = null;
66
+
63
- $comment = null; $posts = file($filemei);
67
+ $posts = file($filemei);
64
68
 
65
69
  foreach($posts as $post){
66
70