回答編集履歴

3

修正

2019/03/22 01:01

投稿

mayoi_maimai
mayoi_maimai

スコア1583

test CHANGED
@@ -360,7 +360,7 @@
360
360
 
361
361
 
362
362
 
363
- <?php if ( $all['TOTAL'] - (PAGE_LIMIT * $p ) > PAGE_LIMIT ) : ?>
363
+ <?php if ( $all['total'] - (PAGE_LIMIT * $p ) > PAGE_LIMIT ) : ?>
364
364
 
365
365
  <a href="index.php?search=1&name=<?= $name ?>&shop=<?= $shop ?>&user_id=<?= $user_id ?>&p=<?= $p+1 ?>" class="pull-right">次へ</a>
366
366
 

2

修正

2019/03/22 01:01

投稿

mayoi_maimai
mayoi_maimai

スコア1583

test CHANGED
@@ -68,6 +68,8 @@
68
68
 
69
69
  $pdo = new PDO ( "pgsql:host=myhost;port=5432;dbname=mydb;user=myuser;password=*****" );
70
70
 
71
+
72
+
71
73
  //カラム名を小文字にする
72
74
 
73
75
  $pdo ->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
@@ -136,55 +138,49 @@
136
138
 
137
139
 
138
140
 
141
+ // 表示用
142
+
143
+ $sql = $pdo->prepare('select * from hosts '.$whereSql.' order by post_id desc limit :limit offset :offset');
144
+
145
+
146
+
147
+ $sql->bindValue(":offset", $offset, PDO::PARAM_INT);
148
+
149
+ $sql->bindValue(":limit", PAGE_LIMIT, PDO::PARAM_INT);
150
+
151
+ if ( $name ) {
152
+
153
+ $sql->bindValue(":name", "%" . addcslashes($name, '\_%') . "%", PDO::PARAM_STR);
154
+
155
+ }
156
+
157
+ if ( $shop ) {
158
+
159
+ $sql->bindValue(":shop", "%" . addcslashes($shop, '\_%') . "%", PDO::PARAM_STR);
160
+
161
+ }
162
+
163
+ if ( $user_id ) {
164
+
165
+ $sql->bindValue(":user_id", addcslashes($user_id, '\_%') , PDO::PARAM_STR);
166
+
167
+ }
168
+
169
+ $sql->execute();
170
+
171
+
172
+
173
+ // 検索結果取得
174
+
175
+ $result = $sql->fetchAll();
176
+
177
+
178
+
139
179
  // 件数取得
140
180
 
141
- $totalRow = $pdo->prepare('select COUNT(*) AS "TOTAL" from hosts '.$whereSql);
181
+ $totalRow = $pdo->query('select COUNT(*) AS "TOTAL" from hosts '.$whereSql);
142
-
143
-
144
-
145
- // 表示用
182
+
146
-
147
- $sql = $pdo->prepare('select * from hosts '.$whereSql.' order by post_id desc limit :limit offset :offset');
148
-
149
-
150
-
151
- $sql->bindValue(":offset", $offset, PDO::PARAM_INT);
152
-
153
- $sql->bindValue(":limit", PAGE_LIMIT, PDO::PARAM_INT);
154
-
155
- if ( $name ) {
156
-
157
- $sql->bindValue(":name", "%" . addcslashes($name, '\_%') . "%", PDO::PARAM_STR);
158
-
159
- }
160
-
161
- if ( $shop ) {
162
-
163
- $sql->bindValue(":shop", "%" . addcslashes($shop, '\_%') . "%", PDO::PARAM_STR);
164
-
165
- }
166
-
167
- if ( $user_id ) {
168
-
169
- $sql->bindValue(":user_id", addcslashes($user_id, '\_%') , PDO::PARAM_STR);
170
-
171
- }
172
-
173
- $sql->execute();
174
-
175
-
176
-
177
- // 検索結果取得
178
-
179
- $result = $sql->fetchAll();
180
-
181
-
182
-
183
- // 件数取得
184
-
185
- $all = $totalRow->fetch(PDO::FETCH_ASSOC);
183
+ $all = $totalRow->fetch(PDO::FETCH_ASSOC);
186
-
187
-
188
184
 
189
185
 
190
186
 
@@ -294,9 +290,9 @@
294
290
 
295
291
  <div class="col-xs-12" >
296
292
 
297
- <?php if ( $all['TOTAL'] > 0 && $search ) : ?>
293
+ <?php if ( $all['total'] > 0 && $search ) : ?>
298
-
294
+
299
- <p class="alert alert-success"><?= number_format($all['TOTAL']) ?>件見つかりました。</p>
295
+ <p class="alert alert-success"><?= number_format($all['total']) ?>件見つかりました。</p>
300
296
 
301
297
  <table class="table">
302
298
 

1

修正

2019/03/22 01:00

投稿

mayoi_maimai
mayoi_maimai

スコア1583

test CHANGED
@@ -49,3 +49,347 @@
49
49
  $sql = $pdo->prepare('select * from hosts '.$whereSql.' order by post_id desc limit :limit offset :offset');
50
50
 
51
51
  ```
52
+
53
+
54
+
55
+ ```php
56
+
57
+ <?php
58
+
59
+ ini_set( 'display_errors', 1 );
60
+
61
+ ini_set( 'error_reporting', E_ALL );
62
+
63
+ // 取得件数
64
+
65
+ define('PAGE_LIMIT', 10);
66
+
67
+
68
+
69
+ $pdo = new PDO ( "pgsql:host=myhost;port=5432;dbname=mydb;user=myuser;password=*****" );
70
+
71
+ //カラム名を小文字にする
72
+
73
+ $pdo ->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
74
+
75
+ // SQL実行に失敗した場合、例外を発生させる
76
+
77
+ $pdo->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
78
+
79
+ $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
80
+
81
+
82
+
83
+ // リクエストパラメータの取得
84
+
85
+ $search = filter_input(INPUT_GET, 'search');
86
+
87
+ $p = !is_numeric(filter_input(INPUT_GET, 'p')) ? 0 : filter_input(INPUT_GET, 'p');
88
+
89
+ $name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_SPECIAL_CHARS);
90
+
91
+ $shop = filter_input(INPUT_GET, 'shop', FILTER_SANITIZE_SPECIAL_CHARS);
92
+
93
+ $user_id = filter_input(INPUT_GET, 'user_id', FILTER_SANITIZE_SPECIAL_CHARS);
94
+
95
+
96
+
97
+ // 取得開始位置
98
+
99
+ $offset = $p * PAGE_LIMIT;
100
+
101
+
102
+
103
+ // SQL生成
104
+
105
+ $where = [];
106
+
107
+ $whereSql = null;
108
+
109
+
110
+
111
+ if ( $name ) {
112
+
113
+ $where[] = "name like :name";
114
+
115
+ }
116
+
117
+ if ( $shop ) {
118
+
119
+ $where[] = "shop like :shop";
120
+
121
+ }
122
+
123
+ if ( $user_id ) {
124
+
125
+ $where[] = "user_id = :user_id";
126
+
127
+ }
128
+
129
+
130
+
131
+ if ( count($where) > 0 ) {
132
+
133
+ $whereSql = " where ".implode(' OR ', $where);
134
+
135
+ }
136
+
137
+
138
+
139
+ // 件数取得
140
+
141
+ $totalRow = $pdo->prepare('select COUNT(*) AS "TOTAL" from hosts '.$whereSql);
142
+
143
+
144
+
145
+ // 表示用
146
+
147
+ $sql = $pdo->prepare('select * from hosts '.$whereSql.' order by post_id desc limit :limit offset :offset');
148
+
149
+
150
+
151
+ $sql->bindValue(":offset", $offset, PDO::PARAM_INT);
152
+
153
+ $sql->bindValue(":limit", PAGE_LIMIT, PDO::PARAM_INT);
154
+
155
+ if ( $name ) {
156
+
157
+ $sql->bindValue(":name", "%" . addcslashes($name, '\_%') . "%", PDO::PARAM_STR);
158
+
159
+ }
160
+
161
+ if ( $shop ) {
162
+
163
+ $sql->bindValue(":shop", "%" . addcslashes($shop, '\_%') . "%", PDO::PARAM_STR);
164
+
165
+ }
166
+
167
+ if ( $user_id ) {
168
+
169
+ $sql->bindValue(":user_id", addcslashes($user_id, '\_%') , PDO::PARAM_STR);
170
+
171
+ }
172
+
173
+ $sql->execute();
174
+
175
+
176
+
177
+ // 検索結果取得
178
+
179
+ $result = $sql->fetchAll();
180
+
181
+
182
+
183
+ // 件数取得
184
+
185
+ $all = $totalRow->fetch(PDO::FETCH_ASSOC);
186
+
187
+
188
+
189
+
190
+
191
+ ?>
192
+
193
+ <!DOCTYPE HTML>
194
+
195
+ <html lang="ja">
196
+
197
+ <head>
198
+
199
+ <meta charset="UTF-8">
200
+
201
+ <meta http-equiv="Content-Style-Type" content="text/css">
202
+
203
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
204
+
205
+ <link rel="stylesheet" as="style" href="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" type="text/css" media="all" onload="this.rel='stylesheet'">
206
+
207
+ <link rel="stylesheet" as="style" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" type="text/css" media="all" onload="this.rel='stylesheet'">
208
+
209
+ </head>
210
+
211
+ <body>
212
+
213
+
214
+
215
+ <div class="make">
216
+
217
+ <style type="text/css">
218
+
219
+ .make{
220
+
221
+ text-align: center;
222
+
223
+ font-size:15px;
224
+
225
+ font-weight:bold;
226
+
227
+ font-size:20px;
228
+
229
+ }
230
+
231
+ input{
232
+
233
+ padding:10px 10px ;
234
+
235
+ border-radius:30px;
236
+
237
+ margin:10px 0;
238
+
239
+ }
240
+
241
+ </style>
242
+
243
+ <input type="button" onclick="location.href='user_register.php'"value="MyIDを発行・確認">
244
+
245
+ <input type="button" onclick="location.href='post_new_review.php'"value="NEWLOGを書く">
246
+
247
+ </div>
248
+
249
+
250
+
251
+ <style type="text/css">
252
+
253
+ h3 {
254
+
255
+ text-align: center;
256
+
257
+ }
258
+
259
+ </style>
260
+
261
+ <h3>検索フォーム</h3>
262
+
263
+ <div class="col-xs-12 well">
264
+
265
+ <form method="get">
266
+
267
+ <div class="form-group ">
268
+
269
+ <label for="InputName">ホスト名</label>
270
+
271
+ <input name="name" class="form-control" id="InputName" value="<?= $name ?>">
272
+
273
+ <label for="InputShop">店舗名</label>
274
+
275
+ <input name="shop" class="form-control" id="InputShop" value="<?= $shop ?>">
276
+
277
+ <label for="InputUser_id">ユーザーID</label>
278
+
279
+ <input name="user_id" class="form-control" id="InputUser_id" value="<?= $user_id ?>">
280
+
281
+ <button type="submit" class="btn btn-default" name="search" value="1">検索</button>
282
+
283
+ </div>
284
+
285
+ </form>
286
+
287
+ </div>
288
+
289
+
290
+
291
+
292
+
293
+ <?php if ( $search ) : ?>
294
+
295
+ <div class="col-xs-12" >
296
+
297
+ <?php if ( $all['TOTAL'] > 0 && $search ) : ?>
298
+
299
+ <p class="alert alert-success"><?= number_format($all['TOTAL']) ?>件見つかりました。</p>
300
+
301
+ <table class="table">
302
+
303
+ <thead>
304
+
305
+ <tr>
306
+
307
+ <th>名前</th>
308
+
309
+ <th>店舗名</th>
310
+
311
+ <th>評価</th>
312
+
313
+ <th>コメント</th>
314
+
315
+ </tr>
316
+
317
+ </thead>
318
+
319
+ <tbody>
320
+
321
+ <?php foreach($result as $key => $value) : ?>
322
+
323
+ <tr>
324
+
325
+ <td><?= $value['name'] ?></td>
326
+
327
+ <td><?= $value['shop'] ?></td>
328
+
329
+ <td><?php if ( $value['point'] == '-1' ) : ?>
330
+
331
+ <img src="#">
332
+
333
+ <?php elseif ( $value['point'] == '1' ) : ?>
334
+
335
+ <img src="#">
336
+
337
+ <?php elseif ( $value['point'] == '3' ) : ?>
338
+
339
+ <img src="#">
340
+
341
+ </td><?php endif; ?>
342
+
343
+ <td><a href ="show_comment.php?post_id=<?= $value['post_id'] ?>">コメント</a></td>
344
+
345
+ </tr>
346
+
347
+ <?php endforeach; ?>
348
+
349
+ </tbody>
350
+
351
+ </table>
352
+
353
+ <!-- ページネーション -->
354
+
355
+ <?php if ( $p > 0 ) : ?>
356
+
357
+ <a href="index.php?search=1&name=<?= $name ?>&shop=<?= $shop ?>&user_id=<?= $user_id ?>&p=<?= $p-1 ?>" class="pull-left">戻る</a>
358
+
359
+ <?php else : ?>
360
+
361
+ <span class="pull-left">最新</span>
362
+
363
+ <?php endif; ?>
364
+
365
+
366
+
367
+ <?php if ( $all['TOTAL'] - (PAGE_LIMIT * $p ) > PAGE_LIMIT ) : ?>
368
+
369
+ <a href="index.php?search=1&name=<?= $name ?>&shop=<?= $shop ?>&user_id=<?= $user_id ?>&p=<?= $p+1 ?>" class="pull-right">次へ</a>
370
+
371
+ <?php else : ?>
372
+
373
+ <span class="pull-right">末尾</span>
374
+
375
+ <?php endif; ?>
376
+
377
+
378
+
379
+ <?php else : ?>
380
+
381
+ <p class="alert alert-danger">検索対象は見つかりませんでした。</p>
382
+
383
+ <?php endif; ?>
384
+
385
+ </div>
386
+
387
+ <?php endif; ?>
388
+
389
+
390
+
391
+ </body>
392
+
393
+ </html>
394
+
395
+ ```