兩個關鍵參數:
$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>
<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 效能下降。