ページネイション、ページ入力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
<?php if (isset($_GET['page'])) { $page = (int)$_GET['page']; } else { $page = 1; } } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } // スタートのポジションを計算する if ($page > 1) { // 例:2ページ目の場合は、『(2 × 10) - 10 = 10』 $start = ($page * 10) - 10; } else { $start = 0; } //meiboテーブルから10件のデータを取得する $posts = $dbh->prepare(" SELECT id, namae, jyusyo FROM meibo LIMIT {$start}, 10 "); $posts->execute(); echo "<table>\n"; echo "\t<tr><th>id</th><th>namae</th><th>jyusyo</th></tr>\n"; while( $result = $posts->fetch( PDO::FETCH_ASSOC ) ){ echo "\t<tr>\n"; echo "\t\t<td>{$result['id']}</td>\n"; echo "\t\t<td>{$result['namae']}</td>\n"; echo "\t\t<td>{$result['jyusyo']}</td>\n"; echo "\t</tr>\n"; } echo "</table>\n"; // 接続を使用する $page_num = $dbh->prepare(" SELECT COUNT(*) id FROM posts "); $page_num->execute(); $page_num = $page_num->fetchColumn(); //ページネーションの数を取得する $pagination = ceil($page_num / 10); ?> <?php for ($x=1; $x <= $pagination ; $x++) { ?> <a href="$_SERVER[PHP_SELF]?page=<?php echo $page+1 ?>"><?php echo $page + 1; ?></a> <?php } print "$APPFOOTER"; ?> <p><a href="DBphpmenu.php">データベースメニューへ戻る</a></p> </body> </html> |
何ページあるかをどうして知るか?という問題は残ります。