核心函數
// 初始化分頁參數
function _page($_sql, $_size) {
global $_page, $_pagesize, $_pagenum, $_pageabsolute, $_num;
$_page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1;
$_pagesize = $_size;
$_num = _num_rows(_query($_sql));
$_pageabsolute = $_num ? ceil($_num / $_pagesize) : 1;
if ($_page > $_pageabsolute) $_page = $_pageabsolute;
$_pagenum = ($_page - 1) * $_pagesize;
}
// 輸出分頁 HTML
function _paging($_type) {
global $_page, $_pageabsolute, $_num;
if ($_type == 1) { // 數字分頁
echo '<div id="page_num"><ul>';
for ($i = 0; $i < $_pageabsolute; $i++) {
$p = $i + 1;
$class = ($_page == $p) ? ' class="selected"' : '';
echo "<li><a href=\"blog.php?page={$p}\"{$class}>{$p}</a></li>";
}
echo '</ul></div>';
} elseif ($_type == 2) { // 文字分頁
echo '<div id="page_text"><ul>';
echo "<li>{$_page}/{$_pageabsolute} 頁 | </li>";
echo "<li>共<strong>{$_num}</strong>條 | </li>";
if ($_page == 1) {
echo '<li>首頁 | </li><li>上一頁 | </li>';
} else {
echo '<li><a href="'.SCRIPT.'.php">首頁</a> | </li>';
echo '<li><a href="'.SCRIPT.'.php?page='.($_page-1).'">上一頁</a> | </li>';
}
if ($_page == $_pageabsolute) {
echo '<li>下一頁 | </li><li>尾頁</li>';
} else {
echo '<li><a href="'.SCRIPT.'.php?page='.($_page+1).'">下一頁</a> | </li>';
echo '<li><a href="'.SCRIPT.'.php?page='.$_pageabsolute.'">尾頁</a></li>';
}
echo '</ul></div>';
}
}
調用方式
// 在查詢前調用
_page("SELECT * FROM users", 20);
// 查詢時加 LIMIT $_pagenum, $_pagesize
// 模板中輸出
_paging(1); // 數字分頁
_paging(2); // 文字分頁