首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP MySQL 分頁核心類別 PageQuery 完整原始碼解析與應用

     編輯:MySQL 資料庫相關知識

類別架構概覽

class PageQuery extends dbClass {
    // 核心屬性
    var $Offset;      // 記錄偏移量
    var $Total;       // 總筆數
    var $maxLine;     // 每頁筆數
    var $result;      // 查詢結果資源
    var $TPages;      // 總頁數
    var $CPages;      // 當前頁碼
    var $PageQuery;   // 分頁傳遞參數
    var $Query;       // 原始 SQL
    var $QueryPart;   // FROM 之後的片段
    var $QueryString; // QUERY_STRING
    var $FilePath;    // 當前腳本路徑

    // 建構子
    function PageQuery($pageLine=10) {
        $this->dbClass();
        $this->maxLine = $pageLine;
    }
    // ... getter 方法省略 ...
}

核心邏輯:myQuery()

  1. 解析 SQL:擷取 FROM 後段落作為 $QueryPart,用於 COUNT(*) 查詢。
  2. 取得偏移量:從 $GLOBALS['offset'] 或預設 0。
  3. 計算總筆數:SELECT COUNT(*) $QueryPart。
  4. 計算分頁資訊:
    $this->TPages = ceil($this->Total / $this->maxLine);
    $this->CPages = floor($this->Offset / $this->maxLine) + 1;
  5. 執行分頁查詢:$Query . " LIMIT $Offset, $maxLine"。

分頁導航生成:PageLegend()

  • 計算首頁 (0)、上頁 (Offset-maxLine)、下頁 (Offset+maxLine)、尾頁 ( (TPages-1)*maxLine ) 偏移量。
  • 動態組合 QUERY_STRING 保留原查詢參數。
  • 輸出 HTML 連結:首頁、前頁、後頁、尾頁、頁次統計、每頁筆數、總筆數。

使用範例

include("dbClass.inc");
include("PageQuery.inc");

$pq = new PageQuery(15);
$pq->myQuery("SELECT id, title, created FROM articles WHERE status=1 ORDER BY id DESC");

while ($row = mysql_fetch_assoc($pq->result)) {
    echo "{$row['id']}. {$row['title']} <br>";
}
echo $pq->PageLegend();

遷移建議

現代專案建議改寫為 PDO/Mysqli 預處理語句,並將分頁邏輯封裝為獨立服務類,支援游標分頁以應對百萬級資料表。

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