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

PHP + MySQL 分頁顯示完整範例解析

     編輯:PHP 相關知識

分頁原理

兩個關鍵參數:

  • $pagesize:每頁筆數
  • $page:當前頁碼

MySQL 使用 LIMIT offset, rows:

offset = $pagesize * ($page - 1)
rows   = $pagesize

例:LIMIT 10, 10 取第 11~20 筆資料。

核心代碼

$pagesize = 10;
$conn = mysql_connect('localhost', 'root', '');
$rs = mysql_query('SELECT COUNT(*) FROM tb_product', $conn);
$myrow = mysql_fetch_array($rs);
$numrows = $myrow[0];

$pages = intval($numrows / $pagesize);
if ($numrows % $pagesize) $pages++;

$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$offset = $pagesize * ($page - 1);

$rs = mysql_query("SELECT * FROM myTable ORDER BY id DESC LIMIT $offset, $pagesize", $conn);

建立測試資料表

CREATE TABLE myTable (
    id INT NOT NULL AUTO_INCREMENT,
    news_title VARCHAR(50),
    news_cont TEXT,
    add_time DATETIME,
    PRIMARY KEY (id)
);

完整 HTML + PHP 範例

<html>
<head><title>PHP 分頁示例</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<?php
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('mydata', $conn);

$pagesize = 1;
$rs = mysql_query('SELECT COUNT(*) FROM tb_product', $conn);
$myrow = mysql_fetch_array($rs);
$numrows = $myrow[0];

$pages = intval($numrows / $pagesize);
if ($numrows % $pagesize) $pages++;

$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$offset = $pagesize * ($page - 1);

$rs = mysql_query("SELECT * FROM myTable ORDER BY id DESC LIMIT $offset, $pagesize", $conn);

while ($row = mysql_fetch_assoc($rs)) {
    echo "<div><strong>{$row['news_title']}</strong><br>{$row['news_cont']}</div><hr>";
}

// 分頁連結
for ($i = 1; $i <= $pages; $i++) {
    echo "<a href='?page=$i'>[$i]</a> ";
}
?>
</body>
</html>

現代化建議

  • 改用 mysqli 或 PDO 預處理語句,防止 SQL 注入。
  • 封裝分頁邏輯為可重用類別/函數。
  • 大量資料時考慮使用「游標分頁」避免 OFFSET 效能下降。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved