質問編集履歴

4

$total_sql文を修正:as totalを追加

2018/04/12 05:25

投稿

nasulrj
nasulrj

スコア38

test CHANGED
File without changes
test CHANGED
@@ -104,7 +104,7 @@
104
104
 
105
105
  //var_dump($sql);
106
106
 
107
- $total_sql = "select count(*) from items where item='.$arrParams.'";
107
+ $total_sql = "select count(*) as total from items";
108
108
 
109
109
  $row_total = $dbh->query($total_sql)->fetch();
110
110
 
@@ -190,8 +190,12 @@
190
190
 
191
191
  ```
192
192
 
193
+ $total_sql文にas totalを追加しました。
194
+
195
+ 追加したことにより、全体表示のページリンクが回復できました。
196
+
193
197
 
194
198
 
195
199
  実行結果
196
200
 
197
- [こちらからお願いします](https://i.gyazo.com/9b088101dd2c32787aea17552b9e593c.png)
201
+ [こちらからお願いします](https://i.gyazo.com/b2f47ef385fac5906da059639c6b35f8.png)

3

ソースコードを回答していただいたものに修正

2018/04/12 05:25

投稿

nasulrj
nasulrj

スコア38

test CHANGED
File without changes
test CHANGED
@@ -12,15 +12,15 @@
12
12
 
13
13
  ```php
14
14
 
15
- //データベース処理を行っているPHPファイルを読み込む
15
+ //データベースの接続処理PHPファイルを読み込む
16
16
 
17
17
  require('test/connecttest.php');
18
18
 
19
19
 
20
20
 
21
- //1件ずつ表示
21
+ //5件ずつブラウザに表示させる
22
22
 
23
- define('COMMENTS_PER_PAGE', 1);
23
+ define('COMMENTS_PER_PAGE', 5);
24
24
 
25
25
 
26
26
 
@@ -33,8 +33,6 @@
33
33
  $dbh = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8', DB_USER, DB_PASSWORD);
34
34
 
35
35
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
36
-
37
-
38
36
 
39
37
 
40
38
 
@@ -50,11 +48,11 @@
50
48
 
51
49
  //ページ
52
50
 
53
- if (preg_match('/^[1-9][0-9]*$/', $_GET['page'])) {
51
+ if (filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT) > 0) {
54
52
 
55
- $page = (int)$_GET['page'];
53
+ $page=filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT,["options"=>["default"=>1,"min_range"=>1]]);
56
54
 
57
- var_dump($page);
55
+ //var_dump($page);
58
56
 
59
57
  } else {
60
58
 
@@ -62,43 +60,29 @@
62
60
 
63
61
  }
64
62
 
63
+ var_dump($page);
64
+
65
65
 
66
66
 
67
67
  $offset=(int)COMMENTS_PER_PAGE *($page-1);
68
+
69
+ //var_dump($offset);
68
70
 
69
71
 
70
72
 
71
73
 
72
74
 
73
- if(isset($_POST['search']) && !empty($_POST['itemName'])){
75
+ $arrParams = [];
74
76
 
75
- $sql = "select * from items WHERE item LIKE (:item) limit ".$offset.",".COMMENTS_PER_PAGE;
76
-
77
- $stmt = $dbh->prepare($sql);
78
-
79
- $word ="%".$_POST['itemName']."%";
77
+ $sql = "select * from items ";
80
-
81
- $stmt->bindValue(':item', $word, PDO::PARAM_STR);
82
-
83
- $stmt->execute();
84
78
 
85
79
 
86
80
 
87
- $total = $dbh->query("select count(*) from items where item='.$word.'");
81
+ if (filter_input(INPUT_POST, 'itemName') != '') {
88
82
 
89
- var_dump($total);
83
+ $sql .= "WHERE item LIKE :item ";
90
84
 
91
-
92
-
93
- }else{
94
-
95
- $sql = "select * from items limit ".$offset.",".COMMENTS_PER_PAGE;
96
-
97
- $stmt = $dbh->query($sql);
98
-
99
-
100
-
101
- $total = $dbh->query("select count(*) from items")->fetchColumn();
85
+ $arrParams[':item'] = "%" . addcslashes(filter_input(INPUT_POST, 'itemName') , '\_%') . "%";
102
86
 
103
87
  }
104
88
 
@@ -106,15 +90,35 @@
106
90
 
107
91
 
108
92
 
93
+ // 検索条件で行を返す
94
+
95
+ $limit = sprintf("limit %d, %d", $offset, COMMENTS_PER_PAGE);
96
+
97
+ $stmt = $dbh->prepare($sql . $limit);
98
+
99
+ $stmt->execute($arrParams);
100
+
101
+ var_dump($arrParams);
102
+
103
+ // 同じ検索条件で全件数を返す
104
+
105
+ //var_dump($sql);
106
+
107
+ $total_sql = "select count(*) from items where item='.$arrParams.'";
108
+
109
+ $row_total = $dbh->query($total_sql)->fetch();
110
+
111
+ $total = $row_total['total'];
112
+
113
+ var_dump($total_sql);
109
114
 
110
115
 
111
116
 
117
+ $totalPages = ceil($total / COMMENTS_PER_PAGE);
118
+
119
+ var_dump($totalPages);
112
120
 
113
121
 
114
-
115
- //$comments = array();
116
-
117
- $totalPages = ceil($total / COMMENTS_PER_PAGE);
118
122
 
119
123
  ?>
120
124
 
@@ -160,7 +164,7 @@
160
164
 
161
165
  </ul>
162
166
 
163
-
167
+ <!--何故かここから先がブラウザに表示されなくなりました -->
164
168
 
165
169
  <?php if($page >1): ?>
166
170
 
@@ -190,4 +194,4 @@
190
194
 
191
195
  実行結果
192
196
 
193
- [こちらからお願いします](https://i.gyazo.com/885ea7a761f12306bea8ddf392e56d44.gif)
197
+ [こちらからお願いします](https://i.gyazo.com/9b088101dd2c32787aea17552b9e593c.png)

2

実行結果のリンクを修正

2018/04/12 02:13

投稿

nasulrj
nasulrj

スコア38

test CHANGED
File without changes
test CHANGED
@@ -170,7 +170,7 @@
170
170
 
171
171
  <?php for ($i = 1; $i <= $totalPages; $i++) :?>
172
172
 
173
- <a href="?page=<?php echo $i; ?>"><?php echo $i ?></a>
173
+ <a href="?page=<?php echo $i; ?>"><?php echo[リンク内容](https://i.gyazo.com/885ea7a761f12306bea8ddf392e56d44.gif) $i ?></a>
174
174
 
175
175
  <?php endfor; ?>
176
176
 
@@ -190,4 +190,4 @@
190
190
 
191
191
  実行結果
192
192
 
193
- [![こちら](https://i.gyazo.com/885ea7a761f12306bea8ddf392e56d44.gif)](https://gyazo.com/885ea7a761f12306bea8ddf392e56d44)
193
+ [こちらからお願いします](https://i.gyazo.com/885ea7a761f12306bea8ddf392e56d44.gif)

1

実行結果追加およびソースコードを回答を参考にして修正

2018/04/12 00:25

投稿

nasulrj
nasulrj

スコア38

test CHANGED
File without changes
test CHANGED
@@ -12,11 +12,13 @@
12
12
 
13
13
  ```php
14
14
 
15
+ //データベース処理を行っているPHPファイルを読み込む
16
+
15
17
  require('test/connecttest.php');
16
18
 
17
19
 
18
20
 
19
- //5件ずつ表示
21
+ //1件ずつ表示
20
22
 
21
23
  define('COMMENTS_PER_PAGE', 1);
22
24
 
@@ -32,7 +34,7 @@
32
34
 
33
35
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
34
36
 
35
- $dbh->query("set names utf8");
37
+
36
38
 
37
39
 
38
40
 
@@ -183,3 +185,9 @@
183
185
 
184
186
 
185
187
  ```
188
+
189
+
190
+
191
+ 実行結果
192
+
193
+ [![こちら](https://i.gyazo.com/885ea7a761f12306bea8ddf392e56d44.gif)](https://gyazo.com/885ea7a761f12306bea8ddf392e56d44)