質問編集履歴

1

修正

2019/06/26 15:17

投稿

ariiiiiga
ariiiiiga

スコア66

test CHANGED
@@ -1 +1 @@
1
- ページング機能けた
1
+ ページング機能つい
test CHANGED
@@ -1,335 +1,3 @@
1
- ### 前提・実現したいこと
1
+ ページング機能について教えて頂きたいです。
2
2
 
3
- 簡易的な予約サイトを作っていす。
3
+ ページング機能につい教えて頂きたす。
4
-
5
- ログインをすると店舗の一覧が表示され店舗名を押すと予約画面に移ります。
6
-
7
- 店舗が一覧で表示されているのですが、これを10件ごとに表示するためにページング機能をつけたいです。
8
-
9
-
10
-
11
- 現状エラーはでていません。
12
-
13
- よろしくお願いします。
14
-
15
-
16
-
17
-
18
-
19
- ### 該当のソースコード
20
-
21
-
22
-
23
- ```ここに言語名を入力
24
-
25
- user_home.php>
26
-
27
- <?php
28
-
29
- error_reporting(E_ALL);
30
-
31
- ini_set("display_errors",1);
32
-
33
- define('PAGE_LIMIT', 10);
34
-
35
- session_start();
36
-
37
- try {
38
-
39
- $pdo = new PDO('mysql:host=localhost;dbname=reserve;charset=utf8','root','',);
40
-
41
- $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
42
-
43
- $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
44
-
45
-
46
-
47
- if(!isset($_SESSION['user'])) {
48
-
49
- header("Location: user_index.php");
50
-
51
- }
52
-
53
- // ①ユーザーIDからユーザー名を取り出す
54
-
55
- $query = "SELECT * FROM users WHERE user_id=:user_id";
56
-
57
- $result = $pdo->prepare($query);
58
-
59
- $result->bindValue(':user_id', $_SESSION['user'], PDO::PARAM_INT);
60
-
61
- $result->execute();
62
-
63
- // ユーザー情報の取り出し
64
-
65
- while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
66
-
67
- $user_name = $row['user_name'];
68
-
69
- $user_id = $row['user_id'];
70
-
71
- $tel = $row['tel'];
72
-
73
- }
74
-
75
-
76
-
77
-
78
-
79
- // ②yesnoで数字順に並べる
80
-
81
- $query = "SELECT * FROM shop order by yesno asc";
82
-
83
- $shop_result = $pdo->query($query);
84
-
85
- if (!$shop_result) {
86
-
87
- print('店側クエリーが失敗しました。' . $pdo->error);
88
-
89
- $pdo->close();
90
-
91
- exit();
92
-
93
- }
94
-
95
- // ショップ情報の取り出し
96
-
97
- $arr_shop = [];
98
-
99
- while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
100
-
101
- $arr_shop[] = [
102
-
103
- 'shop_id' => $row['shop_id'],
104
-
105
- 'shop_name' => $row['shop_name'],
106
-
107
- 'yesno' => $row['yesno'],
108
-
109
- ];
110
-
111
- }
112
-
113
-
114
-
115
- // リクエストパラメータの取得
116
-
117
- $p = !is_numeric(filter_input(INPUT_GET, 'p')) ? 0 : filter_input(INPUT_GET, 'p');
118
-
119
- // 取得開始位置
120
-
121
- $offset = $p * PAGE_LIMIT;
122
-
123
- // SQL生成
124
-
125
- $where = [];
126
-
127
- $whereSql = null;
128
-
129
- if ( count($where) > 0 ) {
130
-
131
- $whereSql = " where ".implode(' OR ', $where);
132
-
133
- }
134
-
135
- $sql = $pdo->prepare('select SQL_CALC_FOUND_ROWS * from shop '.$whereSql.' order by shop_id desc limit :limit offset :offset');
136
-
137
- $sql->bindValue(":offset", $offset, PDO::PARAM_INT);
138
-
139
- $sql->bindValue(":limit", PAGE_LIMIT, PDO::PARAM_INT);
140
-
141
- $sql->execute();
142
-
143
-
144
-
145
- // Total件数
146
-
147
- $totalRow = $pdo->query("SELECT FOUND_ROWS() as total");
148
-
149
- $all = $totalRow->fetch(PDO::FETCH_ASSOC);
150
-
151
-
152
-
153
-
154
-
155
- } catch (PDOException $e) {
156
-
157
- var_dump($e);
158
-
159
- die();
160
-
161
- }
162
-
163
- ?>
164
-
165
- <!DOCTYPE HTML>
166
-
167
- <html lang="ja">
168
-
169
- <head>
170
-
171
- <meta charset="utf-8">
172
-
173
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
174
-
175
- <meta name="viewport" content="width=device-width, initial-scale=1">
176
-
177
- <title></title>
178
-
179
- <link href="style.css" rel="stylesheet" type="text/css" media="all">
180
-
181
- </head>
182
-
183
- <body>
184
-
185
-
186
-
187
- <div class="home">
188
-
189
- <div class="header" >
190
-
191
- <div class="col-xs-12" >
192
-
193
- <a href="#" >サイト名</a>
194
-
195
- <p ><?php echo $user_name; ?> ログイン中</p>
196
-
197
- <a href="user_logout.php?user_logout" >ログアウト</a>
198
-
199
- </div>
200
-
201
- </div>
202
-
203
-
204
-
205
- <div class="main">
206
-
207
- <div class="container" >
208
-
209
- <div class="row">
210
-
211
- <div class="col-xs-12" >
212
-
213
- <?php if ( $all['total'] > 0 ) : ?>
214
-
215
- <p class="alert alert-success" >登録店舗数<?= number_format($all['total']) ?>件</p>
216
-
217
- <table class="table table-striped">
218
-
219
- <thead>
220
-
221
- <tr>
222
-
223
- <th>店舗名</th>
224
-
225
- <th>入店可否</th>
226
-
227
- </tr>
228
-
229
- </thead>
230
-
231
- <tbody>
232
-
233
-
234
-
235
- <?php foreach($shop_result as $key => $value) : ?>
236
-
237
- <tr>
238
-
239
- <td><a href="user_shopinfo.php?shop_id=<?= $value['shop_id'] ?>"><?php echo $value['shop_name'] ?></a></td>
240
-
241
- <td><?php
242
-
243
- $pt = htmlspecialchars($value['yesno']);
244
-
245
- $col = [1 => "black",2 => "red"];
246
-
247
- $tx = [1 => "〇",2 => "✖"];
248
-
249
- echo "<font color='" .$col[$pt]."'>";
250
-
251
- echo $tx[$pt];
252
-
253
- echo "</font>";
254
-
255
- ?></td>
256
-
257
- <?php endforeach; ?>
258
-
259
- </tbody>
260
-
261
- </table>
262
-
263
-
264
-
265
- <div class="paging">
266
-
267
- <!-- ページネーション -->
268
-
269
- <?php if ( $p > 0 ) : ?>
270
-
271
- <a href="user_home.php?search=1&shop_name=<?= $shop_name ?>&yesno=<?= $yesno ?>&shop_id=<?= $shop_id ?>&p=<?= $p-1 ?>" class="pull-left">戻る</a>
272
-
273
- <?php else : ?>
274
-
275
- <span class="pull-left">最新</span>
276
-
277
- <?php endif; ?>
278
-
279
-
280
-
281
- <?php if ( $all['total'] - (PAGE_LIMIT * $p ) > PAGE_LIMIT ) : ?>
282
-
283
- <a href="user_home.php?search=1&shop_name=<?= $shop_name ?>&yesno=<?= $yesno ?>&shop_id=<?= $shop_id ?>&p=<?= $p+1 ?>" class="pull-right">次へ</a>
284
-
285
- <?php else : ?>
286
-
287
- <span class="pull-right">末尾</span>
288
-
289
- <?php endif; ?>
290
-
291
- </div>
292
-
293
- <?php else : ?>
294
-
295
- <p class="alert alert-danger">検索対象は見つかりませんでした。</p>
296
-
297
- <?php endif; ?>
298
-
299
- </div>
300
-
301
-
302
-
303
-
304
-
305
- </div>
306
-
307
- </div>
308
-
309
- </div>
310
-
311
- </div>
312
-
313
- </body>
314
-
315
- </html>
316
-
317
-
318
-
319
- ```
320
-
321
-
322
-
323
- ### 試したこと
324
-
325
-
326
-
327
- ここに問題に対して試したことを記載してください。
328
-
329
-
330
-
331
- ### 補足情報(FW/ツールのバージョンなど)
332
-
333
-
334
-
335
- ここにより詳細な情報を記載してください。