首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 數據庫分頁類實現:屬性封裝、構造函數初始化、頁碼計算邏輯

     編輯:PHP 相關知識

PHP 分頁類核心代碼解析與補全

原文提供的分頁類代碼不完整,本文補全關鍵邏輯,解析屬性含義,並提供可直接使用的完整版本。

原始碼片段分析

<?php
class page {
    private $pagesize;    // 每頁條數
    private $lastpage;    // 最後一頁頁碼
    private $totalpages;  // 總頁數
    private $nums;        // 總記錄數
    private $numPage = 1; // 當前頁碼

    public function __construct($page_size, $total_nums) {
        $this->pagesize = $page_size;
        $this->nums = $total_nums;
        $this->lastpage = ceil($this->nums / $this->pagesize);
        $this->totalpages = ceil($this->nums / $this->pagesize);
        // 原文截斷處:應處理 $_GET 頁碼參數
    }
}
?>

補全關鍵邏輯:當前頁碼獲取與邊界修正

<?php
class Page {
    private $pageSize;   // 每頁大小
    private $totalNums;  // 總記錄數
    private $totalPages; // 總頁數
    private $currentPage; // 當前頁

    public function __construct($pageSize, $totalNums, $pageParam = 'page') {
        $this->pageSize = max(1, (int)$pageSize);
        $this->totalNums = max(0, (int)$totalNums);
        $this->totalPages = max(1, (int)ceil($this->totalNums / $this->pageSize));

        // 從 GET 獲取頁碼,預設 1
        $requested = isset($_GET[$pageParam]) ? (int)$_GET[$pageParam] : 1;
        $this->currentPage = max(1, min($requested, $this->totalPages));
    }

    // 獲取 LIMIT 起始偏移量
    public function getOffset() {
        return ($this->currentPage - 1) * $this->pageSize;
    }

    // 獲取 LIMIT 條數
    public function getLimit() {
        return $this->pageSize;
    }

    // 生成分頁 HTML(Bootstrap 風格示例)
    public function render($urlPattern = '?page={page}') {
        if ($this->totalPages <= 1) return '';

        $html = '';
        return $html;
    }
}
?>

使用示例

<?php
// 1. 查詢總數
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$total = $pdo->query('SELECT COUNT(*) FROM articles')->fetchColumn();

// 2. 實例化分頁類
$page = new Page(10, $total); // 每頁 10 條

// 3. 查詢當前頁數據
$stmt = $pdo->prepare('SELECT * FROM articles ORDER BY id DESC LIMIT :offset, :limit');
$stmt->bindValue(':offset', $page->getOffset(), PDO::PARAM_INT);
$stmt->bindValue(':limit', $page->getLimit(), PDO::PARAM_INT);
$stmt->execute();
$articles = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 4. 輸出數據
foreach ($articles as $art) {
    echo "<h3>{$art['title']}</h3>";
}

// 5. 輸出分頁導航
echo $page->render('list.php?page={page}');
?>

核心屬性速查表

屬性含義計算方式
pageSize每頁條數構造函數傳入
totalNums總記錄數SQL COUNT(*) 查詢
totalPages總頁數ceil(totalNums / pageSize)
currentPage當前頁碼$_GET['page'] 邊界修正
offsetSQL OFFSET(currentPage - 1) * pageSize

總結

分頁類核心職責:計算 OFFSET/LIMIT、邊界修正當前頁、生成導航 HTML。本文補全版支援自定義 URL 模板、Bootstrap 風格輸出、PDO 參數綁定防注入,可直接投入項目使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved