回答編集履歴

6

追記

2019/01/30 13:31

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  if(!isset($params['search'])){
12
12
 
13
- return[];
13
+ return[]; //これ返したらどうなるかわかって入れてるのだろうか
14
14
 
15
15
  }
16
16
 
@@ -22,6 +22,10 @@
22
22
 
23
23
  } catch (PDOException $e) {
24
24
 
25
+ //せっかくException捕捉してるのにその内容をどこにも出さないのでは問題が何か分からない。
26
+
27
+ //というか、接続のところだけcatchしても意味がない。全ての処理がうまくいく保障なんてないのでDB関係の処理は一通り囲っておくべき
28
+
25
29
  exit();
26
30
 
27
31
  }
@@ -118,7 +122,7 @@
118
122
 
119
123
 
120
124
 
121
- //これだと検索したときと同居できないんじゃ?
125
+ //これだと検索したときと一緒にできない
122
126
 
123
127
 
124
128
 

5

修正

2019/01/30 13:31

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  $where[] = "name like '%{$params['name']}%'";
34
34
 
35
- }
35
+ }//SQLインジェクション対策してください。
36
36
 
37
37
 
38
38
 

4

修正

2019/01/30 10:44

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -262,6 +262,8 @@
262
262
 
263
263
  echo '<a href="2.php?p=', $prev_num, '">前へ</a>','</td>'; //検索条件もつけないと他のページで対応できない(今回質問者が聞いていること)
264
264
 
265
+ //,でも動かないことはないけど意味合いとしては「文字列連結」だから . の方が適切。統一すべき
266
+
265
267
  } else {
266
268
 
267
269
  echo '最新';

3

修正

2019/01/30 08:37

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -309,3 +309,19 @@
309
309
 
310
310
 
311
311
  ```
312
+
313
+
314
+
315
+ リクエストパラメータについて基本的な知識がついていないことで非効率で拡張性もなく達成に向かっていないコードになっています。
316
+
317
+ 下記きちんと読んで概念を理解してください
318
+
319
+ - [HTTPとPOSTとGET](https://qiita.com/Sekky0905/items/dff3d0da059d6f5bfabf)
320
+
321
+ - [[PHP] リクエストパラメータ・セッションに関するまとめ](https://qiita.com/mpyw/items/7852213f478e8c5a2802)
322
+
323
+
324
+
325
+ teratail内を探せば類似の問題はあります。
326
+
327
+ - [PHP ページ移動時のデータ保存について](https://teratail.com/questions/26387)

2

修正

2019/01/30 08:34

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -118,7 +118,7 @@
118
118
 
119
119
 
120
120
 
121
- //これだと検索したときと同居できないんじゃ?検索条件はSESSIONで持ちまわるとかで対応可能。
121
+ //これだと検索したときと同居できないんじゃ?
122
122
 
123
123
 
124
124
 
@@ -260,7 +260,7 @@
260
260
 
261
261
  if($p > 0){
262
262
 
263
- echo '<a href="2.php?p=', $prev_num, '">前へ</a>','</td>';
263
+ echo '<a href="2.php?p=', $prev_num, '">前へ</a>','</td>'; //検索条件もつけないと他のページで対応できない(今回質問者が聞いていること)
264
264
 
265
265
  } else {
266
266
 
@@ -272,7 +272,7 @@
272
272
 
273
273
  if($total_page-1 > $p){
274
274
 
275
- echo '<a href="2.php?p=', $next_num, '">次へ</a>','</td>';
275
+ echo '<a href="2.php?p=', $next_num, '">次へ</a>','</td>';//検索条件もつけないと他のページで対応できない(今回質問者が聞いていること)
276
276
 
277
277
  } else {
278
278
 

1

修正

2019/01/30 08:28

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -118,7 +118,7 @@
118
118
 
119
119
 
120
120
 
121
- //これだと検索したときと同居できないんじゃ?
121
+ //これだと検索したときと同居できないんじゃ?検索条件はSESSIONで持ちまわるとかで対応可能。
122
122
 
123
123
 
124
124
 
@@ -178,7 +178,7 @@
178
178
 
179
179
  <div class="col-xs-6 col-xs-offset-3">
180
180
 
181
- <?php if(isset($hostData) && count($hostData)): ?>
181
+ <?php if(isset($hostData) && count($hostData)): ?>
182
182
 
183
183
  <p class="alert alert-success"><?php echo count($hostData) ?>件見つかりました。</p>
184
184
 
@@ -202,6 +202,10 @@
202
202
 
203
203
  while ($row = $sql -> fetch(PDO::FETCH_ASSOC)){ //$hostDataのデータが無駄になった。
204
204
 
205
+ //「検索結果0件」はlimitやoffsetで絞っても0は0なのでそのためだけに$hostDataを作るのはコストが高すぎる。
206
+
207
+ //例え10件ページングで12件ヒットしたとして「p=3」とブラウザのURL切り替えられても「検索結果0」というのは理論的に合っている
208
+
205
209
  echo '<tr>';
206
210
 
207
211
  echo '<td>', htmlspecialchars($row['name']),'</td>';
@@ -282,19 +286,15 @@
282
286
 
283
287
  /*
284
288
 
285
- SQLは書き2本で充分今回の対応が可能 無駄なDB接続・SQL実行が多すぎるのでデータ件数が何千件何万件となったときかなり危険
289
+ SQLは下記2本で充分今回の対応が可能 無駄なDB接続・SQL実行が多すぎるのでデータ件数が何千件何万件となったときかなり危険
286
290
 
287
291
  select * from hosts $whereSql に offset limit つけたもの(要は現ページに表示するデータ)
288
292
 
289
293
 
290
294
 
291
- select count(*) from hosts $whereSql (要は検索結果の全件数)
295
+ select count(*) from hosts $whereSql (要は検索結果の全件数)
292
-
293
-
294
-
295
-
296
-
297
-
296
+
297
+
298
298
 
299
299
  */
300
300