ページング処理を作っているのですが、現在DBには15件データが入っていて1ページ目には10件表示。2ページ目には5件表示したいのですが2ページとも10件表示になってしまいリンクを見ると
1ページ目はhttp://localhost/paging/?page%20=%201
2ページ目はhttp://localhost/paging/?page%20=%202となぜか出てしまいます。
どなたか教えてほしいです。
php
1<?php 2require_once($_SERVER["DOCUMENT_ROOT"] . "/php/classes/conf.php"); 3require_once($_SERVER["DOCUMENT_ROOT"] . "/php/classes/Book.php"); 4define('PER_PAGE',10); 5// GETで現在のページ数を取得する(未入力の場合は1を挿入) 6if (isset($_GET['page'])) { 7$page = (int)$_GET['page']; 8} else { 9$page = 1; 10} 11 12$bookList = []; 13try { 14 $db = new PDO(Conf::DB_DNS, Conf::DB_USERNAME, Conf::DB_PASSWORD); 15 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 16 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 17 18 $offset = PER_PAGE * ($page - 1); //現在のページ-1に10を掛ける 19 $sql = "SELECT * FROM product LIMIT ".$offset.",".PER_PAGE; 20 $stmt = $db->prepare($sql); 21 $result = $stmt->execute(); 22 23 24 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 25 $dp = []; 26 foreach ($row as $col => $val) { 27 $dp[$col] = $val; 28 } 29 30 $book = new Book(); 31 $book->setBoName($dp['book_name']); 32 $book->setPrice($dp['price']); 33 $bookList[$dp['book_id']] = $book; 34 } 35 36 $page_num = $db->prepare("SELECT COUNT(*) book_id FROM product"); 37 $page_num ->execute(); 38 $page_num = $page_num->fetchColumn(); 39 $pagenation = ceil($page_num / PER_PAGE); 40 41 42} catch (PDOException $ex) { 43 $_SESSION["errorMsg"] = "DB接続に失敗しました。"; 44} finally { 45 $db = null; 46} 47?> 48 49<!DOCTYPE html> 50<html lang="ja"> 51 <head> 52 <meta charset="utf-8"> 53 <title>書籍情報リスト</title> 54 <link rel="stylesheet" href="/ph34/EP32/css/desing.css" type="text/css"> 55 </head> 56 <body> 57 <section> 58 <table> 59 60 <tbody> 61 <?php 62 if (empty($bookList)) { 63 ?> 64 <tr> 65 <td colspan="5">該当書籍は存在しません。</td> 66 </tr> 67 <?php 68 } 69 else { 70 foreach ($bookList as $book) { 71 ?> 72 <ul id="bookimg"> 73 <li id="box2"><?= $book->getBoName() ?></li> 74 <li>¥<?= $book->getPrice() ?>+税</li> 75 </ul> 76 <?php 77 } 78 } 79 ?> 80 <br> 81 <?php for($i=1; $i <= $pagenation; $i++) :?> 82 <a href="?page = <?php echo $i ?>"><?php echo $i; ?></a> 83 <?php endfor; ?> 84 </tbody> 85 </table> 86 </section> 87 </body> 88</html> 89
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。