質問編集履歴

5

見やすく\?

2016/02/20 08:49

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,130 +1,302 @@
1
1
  本を参考にPHPで掲示板を作っているのですが、ソースコードの途中でhtmlが表示されないくなりました。おそらくPHP側でエラーが起きているのだと思いますし、場所もほぼ分かっていますが、理由がわかりません。
2
2
 
3
+ ```html
4
+
5
+ <?php
6
+
7
+
8
+
9
+ $dsn = 'mysql:host=localhost;dbname=***********;charset=utf8';
10
+
11
+ $db_user = '***********';
12
+
13
+ $db_pass = '***********';
14
+
15
+
16
+
17
+ // 1ページに表示されるコメントの数
18
+
19
+ $num = 10;
20
+
21
+
22
+
23
+ // ページ数が指定されている時
24
+
25
+ $page = 0;
26
+
27
+ if (isset($_GET['page']) && 0 < $_GET['page']) {
28
+
29
+ $page = intaval($_GET['page']) -1;
30
+
31
+ }
32
+
33
+
34
+
35
+ try {
36
+
37
+ // PDOに接続
38
+
39
+ $db = new PDO($dsn, $db_user, $db_pass);
40
+
41
+ $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
42
+
43
+
44
+
45
+ // プリペアドステートメントを作成
46
+
47
+ $stmt = $db->prepare("select * from bbs order by date desc limit :page, :num");
48
+
49
+
50
+
51
+ // パラメーターを割り当て
52
+
53
+ $page *= $num;
54
+
55
+ $stmt->bindParam(':page', $page, PDO::PARAM_INT);
56
+
57
+ $stmt->bindParam(':num', $num, PDO::PARAM_INT);
58
+
59
+
60
+
61
+ // クエリの実行
62
+
63
+ $stmt->execute();
64
+
65
+ } catch(PDOExeption $e) {
66
+
67
+ echo "エラー : " . $e->getMessage();
68
+
69
+ }
70
+
71
+ ?>
72
+
73
+ <!-- 省略 -->
74
+
75
+ <div class="center">
76
+
77
+ <h1>掲示板</h1>
78
+
79
+ <form action="write.php" method="post">
80
+
81
+ <p>
82
+
83
+ 名前 : <input type="text" name="name">
84
+
85
+ </p>
86
+
87
+ <p>
88
+
89
+ タイトル : <input type="text" name="title">
90
+
91
+ </p>
92
+
93
+ <p>
94
+
95
+ 本文<br><textarea name="body"></textarea>
96
+
97
+ </p>
98
+
99
+ <p>
100
+
101
+ 削除パスワード(数字4桁) : <input type="password" name="pass">
102
+
103
+ </p>
104
+
105
+ <p>
106
+
107
+ <input type="submit" value="書き込む">
108
+
109
+ </p>
110
+
111
+ </form>
112
+
113
+ <!-- ここまでは表示される -->
114
+
115
+ <?php
116
+
117
+ while ($row = $stmt->fetch()):
118
+
119
+ $title = $row['title'] ? $row['title'] : '(無題)';
120
+
121
+ ?>
122
+
123
+ <!-- ↓ここから表示されない -->
124
+
125
+
126
+
127
+ <p>
128
+
129
+ 名前 : <?php echo $row['name']; ?>
130
+
131
+ </p>
132
+
133
+ <p>
134
+
135
+ タイトル : <?php echo $row['title']; ?>
136
+
137
+ </p>
138
+
139
+ <p>
140
+
141
+ 本文<br><?php echo nl2br($row['body'], false); ?>
142
+
143
+ </p>
144
+
145
+ <p>
146
+
147
+ <?php echo $row['date']; ?>
148
+
149
+ </p>
150
+
151
+
152
+
153
+ <?php
154
+
155
+ endwhile;
156
+
157
+
158
+
159
+ try {
160
+
161
+ // プリペアドステートメントを作成
162
+
163
+ $stmt->$db->prepare("select count(*) from bbs");
164
+
165
+
166
+
167
+ // クエリの実行
168
+
169
+ $stmt->execute();
170
+
171
+ } catch (PDOException $e) {
172
+
173
+ echo "エラー : " . $e->getMessage();
174
+
175
+ }
176
+
177
+
178
+
179
+ // コメントの件数を取得
180
+
181
+ $comments = $stmt->fetchcolumn();
182
+
183
+
184
+
185
+ // ページ数を計算
186
+
187
+ $max_page = ceil($comments / $num);
188
+
189
+
190
+
191
+ echo '<p>';
192
+
193
+ for ($i = 1; $i <= $max_page; $i++) {
194
+
195
+ echo '<a href="bbs.php?page=${page}">${i}</a>&nbsp;';
196
+
197
+ }
198
+
199
+ echo '</p>';
200
+
201
+ ?>
202
+
203
+
204
+
205
+ </div>
206
+
207
+ </body>
208
+
209
+ </html>
210
+
211
+
212
+
213
+ タイプミス発見
214
+
215
+
216
+
217
+ ```
218
+
219
+
220
+
221
+ 恐らく原因は **while**だろうと思っていますし、実際に **whiule** 及び **endwhile** を消すと
222
+
223
+ ```html
224
+
225
+ <p>
226
+
227
+ 名前 : <?php echo $row['name']; ?>
228
+
229
+ </p>
230
+
231
+ <p>
232
+
233
+ タイトル : <?php echo $row['title']; ?>
234
+
235
+ </p>
236
+
237
+ <p>
238
+
239
+ 本文<br><?php echo nl2br($row['body'], false); ?>
240
+
241
+ </p>
242
+
243
+ <p>
244
+
245
+ <?php echo $row['date']; ?>
246
+
247
+ </p>
248
+
249
+ ```
250
+
251
+ は表示されます(PHP部分は非表示)
252
+
253
+ なぜ表示されないのですか?
254
+
255
+ そして、どうしたら表示されるようになりますか?!
256
+
257
+ ![while](1bfebfcbb43b13fcd64d1124508fd79a.png)
258
+
259
+
260
+
261
+ タイプミス発見
262
+
263
+ ---
264
+
265
+
266
+
3
267
  ```php
4
268
 
5
- <?php
6
-
7
-
8
-
9
- $dsn = 'mysql:host=localhost;dbname=***********;charset=utf8';
10
-
11
- $db_user = '***********';
12
-
13
- $db_pass = '***********';
14
-
15
-
16
-
17
- // 1ページに表示されるコメントの数
18
-
19
- $num = 10;
20
-
21
-
22
-
23
- // ページ数が指定されている時
269
+ //before
24
-
25
- $page = 0;
26
-
27
- if (isset($_GET['page']) && 0 < $_GET['page']) {
28
-
29
- $page = intaval($_GET['page']) -1;
30
-
31
- }
32
-
33
-
34
270
 
35
271
  try {
36
272
 
37
- // PDOに接続
38
-
39
- $db = new PDO($dsn, $db_user, $db_pass);
40
-
41
- $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
42
-
43
-
44
-
45
273
  // プリペアドステートメントを作成
46
274
 
47
- $stmt = $db->prepare("select * from bbs order by date desc limit :page, :num");
275
+ $stmt->$db->prepare("select count(*) from bbs");
48
-
49
-
50
-
276
+
277
+
278
+
51
- // パラメーターを割り当て
279
+ ```
52
-
280
+
53
- $page *= $num;
281
+ ```php
54
-
55
- $stmt->bindParam(':page', $page, PDO::PARAM_INT);
282
+
56
-
57
- $stmt->bindParam(':num', $num, PDO::PARAM_INT);
58
-
59
-
60
-
61
- // クエリの実行
283
+ //after
62
-
63
- $stmt->execute();
284
+
64
-
65
- } catch(PDOExeption $e) {
66
-
67
- echo "エラー : " . $e->getMessage();
68
-
69
- }
70
-
71
- ?>
285
+ try {
72
-
73
- <!-- 省略 -->
286
+
74
-
75
- <div class="center">
76
-
77
- <h1>掲示板</h1>
287
+ // プリペアドステートメントを作成
78
-
288
+
79
- <form action="write.php" method="post">
289
+ $stmt = $db->prepare("select count(*) from bbs");
290
+
291
+
292
+
80
-
293
+ ```
294
+
295
+ これで
296
+
297
+ ```html
298
+
81
- <p>
299
+ <p>
82
-
83
- 名前 : <input type="text" name="name">
84
-
85
- </p>
86
-
87
- <p>
88
-
89
- タイトル : <input type="text" name="title">
90
-
91
- </p>
92
-
93
- <p>
94
-
95
- 本文<br><textarea name="body"></textarea>
96
-
97
- </p>
98
-
99
- <p>
100
-
101
- 削除パスワード(数字4桁) : <input type="password" name="pass">
102
-
103
- </p>
104
-
105
- <p>
106
-
107
- <input type="submit" value="書き込む">
108
-
109
- </p>
110
-
111
- </form>
112
-
113
- <!-- ここまでは表示される -->
114
-
115
- <?php
116
-
117
- while ($row = $stmt->fetch()):
118
-
119
- $title = $row['title'] ? $row['title'] : '(無題)';
120
-
121
- ?>
122
-
123
- <!-- ↓ここから表示されない -->
124
-
125
-
126
-
127
- <p>
128
300
 
129
301
  名前 : <?php echo $row['name']; ?>
130
302
 
@@ -148,178 +320,6 @@
148
320
 
149
321
  </p>
150
322
 
151
-
152
-
153
- <?php
154
-
155
- endwhile;
156
-
157
-
158
-
159
- try {
160
-
161
- // プリペアドステートメントを作成
162
-
163
- $stmt->$db->prepare("select count(*) from bbs");
164
-
165
-
166
-
167
- // クエリの実行
168
-
169
- $stmt->execute();
170
-
171
- } catch (PDOException $e) {
172
-
173
- echo "エラー : " . $e->getMessage();
174
-
175
- }
176
-
177
-
178
-
179
- // コメントの件数を取得
180
-
181
- $comments = $stmt->fetchcolumn();
182
-
183
-
184
-
185
- // ページ数を計算
186
-
187
- $max_page = ceil($comments / $num);
188
-
189
-
190
-
191
- echo '<p>';
192
-
193
- for ($i = 1; $i <= $max_page; $i++) {
194
-
195
- echo '<a href="bbs.php?page=${page}">${i}</a>&nbsp;';
196
-
197
- }
198
-
199
- echo '</p>';
200
-
201
- ?>
202
-
203
-
204
-
205
- </div>
206
-
207
- </body>
208
-
209
- </html>
210
-
211
-
212
-
213
- タイプミス発見
214
-
215
-
216
-
217
- ```
218
-
219
-
220
-
221
- 恐らく原因は **while**だろうと思っていますし、実際に **whiule** 及び **endwhile** を消すと
222
-
223
- ```html
224
-
225
- <p>
226
-
227
- 名前 : <?php echo $row['name']; ?>
228
-
229
- </p>
230
-
231
- <p>
232
-
233
- タイトル : <?php echo $row['title']; ?>
234
-
235
- </p>
236
-
237
- <p>
238
-
239
- 本文<br><?php echo nl2br($row['body'], false); ?>
240
-
241
- </p>
242
-
243
- <p>
244
-
245
- <?php echo $row['date']; ?>
246
-
247
- </p>
248
-
249
- ```
250
-
251
- は表示されます(PHP部分は非表示)
252
-
253
- なぜ表示されないのですか?
254
-
255
- そして、どうしたら表示されるようになりますか?!
256
-
257
- ![while](1bfebfcbb43b13fcd64d1124508fd79a.png)
258
-
259
-
260
-
261
- タイプミス発見
262
-
263
- ---
264
-
265
-
266
-
267
- ```php
268
-
269
- //before
270
-
271
- try {
272
-
273
- // プリペアドステートメントを作成
274
-
275
- $stmt->$db->prepare("select count(*) from bbs");
276
-
277
-
278
-
279
- ```
280
-
281
- ```php
282
-
283
- //after
284
-
285
- try {
286
-
287
- // プリペアドステートメントを作成
288
-
289
- $stmt = $db->prepare("select count(*) from bbs");
290
-
291
-
292
-
293
- ```
294
-
295
- これで
296
-
297
- ```html
298
-
299
- <p>
300
-
301
- 名前 : <?php echo $row['name']; ?>
302
-
303
- </p>
304
-
305
- <p>
306
-
307
- タイトル : <?php echo $row['title']; ?>
308
-
309
- </p>
310
-
311
- <p>
312
-
313
- 本文<br><?php echo nl2br($row['body'], false); ?>
314
-
315
- </p>
316
-
317
- <p>
318
-
319
- <?php echo $row['date']; ?>
320
-
321
- </p>
322
-
323
323
  ```
324
324
 
325
325
  以外は表示されました。

4

a

2016/02/20 08:49

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -258,6 +258,8 @@
258
258
 
259
259
 
260
260
 
261
+ タイプミス発見
262
+
261
263
  ---
262
264
 
263
265
 

3

編集う

2016/02/20 08:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -210,6 +210,10 @@
210
210
 
211
211
 
212
212
 
213
+ タイプミス発見
214
+
215
+
216
+
213
217
  ```
214
218
 
215
219
 
@@ -256,6 +260,8 @@
256
260
 
257
261
  ---
258
262
 
263
+
264
+
259
265
  ```php
260
266
 
261
267
  //before

2

編集ううう

2016/02/20 08:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -251,3 +251,71 @@
251
251
  そして、どうしたら表示されるようになりますか?!
252
252
 
253
253
  ![while](1bfebfcbb43b13fcd64d1124508fd79a.png)
254
+
255
+
256
+
257
+ ---
258
+
259
+ ```php
260
+
261
+ //before
262
+
263
+ try {
264
+
265
+ // プリペアドステートメントを作成
266
+
267
+ $stmt->$db->prepare("select count(*) from bbs");
268
+
269
+
270
+
271
+ ```
272
+
273
+ ```php
274
+
275
+ //after
276
+
277
+ try {
278
+
279
+ // プリペアドステートメントを作成
280
+
281
+ $stmt = $db->prepare("select count(*) from bbs");
282
+
283
+
284
+
285
+ ```
286
+
287
+ これで
288
+
289
+ ```html
290
+
291
+ <p>
292
+
293
+ 名前 : <?php echo $row['name']; ?>
294
+
295
+ </p>
296
+
297
+ <p>
298
+
299
+ タイトル : <?php echo $row['title']; ?>
300
+
301
+ </p>
302
+
303
+ <p>
304
+
305
+ 本文<br><?php echo nl2br($row['body'], false); ?>
306
+
307
+ </p>
308
+
309
+ <p>
310
+
311
+ <?php echo $row['date']; ?>
312
+
313
+ </p>
314
+
315
+ ```
316
+
317
+ 以外は表示されました。
318
+
319
+ ![while](0489c8712b762ca1da7a0a4d3cd15fc9.png)
320
+
321
+ しかし```p```タグの中身が表示されません!?

1

誤字誤字誤字5時誤字誤字誤字誤字

2016/02/20 08:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 本を参考にPHPで掲示板を作っているのですが、ソースコードの途中でhtmlが常時されないくなりました。おそらくPHP側でエラーが起きているのだと思いますし、場所もほぼ分かっていますが、理由がわかりません。
1
+ 本を参考にPHPで掲示板を作っているのですが、ソースコードの途中でhtmlが表示されないくなりました。おそらくPHP側でエラーが起きているのだと思いますし、場所もほぼ分かっていますが、理由がわかりません。
2
2
 
3
3
  ```php
4
4