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

PHP MySQL 分頁類別 RSPage 實作:支援自動計總筆數與靈活查詢

     編輯:MySQL 資料庫相關知識

類別核心屬性

class RSPage {
    var $Link_ID = 0;        // 資料庫連線 ID
    var $m_pageSize = 10;    // 每頁筆數
    var $m_curPage = 1;      // 當前頁碼
    var $m_num = -1;         // 總筆數 (-1 表自動計算)
    var $m_sql;              // 原始 SQL
    var $Parse;              // 結果集資源
    var $Error = "";         // 錯誤訊息
    // ... 其他屬性省略 ...
}

關鍵方法:query()

function query($Query_String, $page=1, $cnt=-1, $size=10) {
    $this->m_pageSize = $size;
    $this->m_curPage  = max(1, $page);

    // 1. 取得總筆數
    if ($cnt != -1) {
        $this->m_num = $cnt;
    } else {
        $res = mysql_query($Query_String, $this->Link_ID);
        $this->m_num = mysql_num_rows($res);
        mysql_free_result($res);
    }

    // 2. 計算分頁資訊
    $pageCount = ceil($this->m_num / $this->m_pageSize);
    if ($this->m_curPage > $pageCount) $this->m_curPage = $pageCount;

    // 3. 組合 LIMIT 查詢
    $posBegin = ($this->m_curPage - 1) * $this->m_pageSize;
    $sql = "$Query_String LIMIT $posBegin, $this->m_pageSize";

    // 4. 執行並回傳結果集
    $this->Parse = mysql_query($sql, $this->Link_ID);
    return $this->Parse;
}

使用範例

$db = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('mydb');

$page = new RSPage();
$page->open($db);

$page->query("SELECT * FROM products WHERE category=3", $_GET['page'], -1, 20);

while ($row = mysql_fetch_assoc($page->Parse)) {
    echo $row['name'] . '<br>';
}

// 顯示分頁連結 (需自行實作導航邏輯)
echo "第 {$page->m_curPage} 頁 / 共 " . ceil($page->m_num / $page->m_pageSize) . " 頁";

特色與限制

  • 優點:介面簡潔、支援手動傳入總筆數 (避免 COUNT(*) 全表掃描)、自動處理頁碼邊界。
  • 缺點:依賴已棄用的 mysql_* 函數、無內建導航生成、錯誤處理較簡單。
  • 現代化建議:改用 PDO、加入介面定義、支援游標分頁、整合 PSR-3 Logger。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved