
傳統分頁頁碼過多會換行影響美觀,此程式自動適應範圍,固定顯示相鄰頁碼:
<< < 1 2 3 4 5 6 7 > >> << < 6 7 8 9 10 11 12 > >>
底線為當前頁,避免過長影響美觀。
<?php
function page($page, $total, $phpfile, $pagesize=10, $pagelen=7) {
$pagecode = '';
$page = intval($page);
$total = intval($total);
if (!$total) return array();
$pages = ceil($total/$pagesize);
if ($page < 1) $page = 1;
if ($page > $pages) $page = $pages;
$offset = $pagesize * ($page - 1);
$init = 1;
$max = $pages;
$pagelen = ($pagelen % 2) ? $pagelen : $pagelen + 1;
$pageoffset = ($pagelen - 1) / 2;
$pagecode = '<div class="page">';
$pagecode .= "<span>$page/$pages</span>";
if ($page != 1) {
$pagecode .= "<a href=\"{$phpfile}?page=1\"><<</a>";
$pagecode .= "<a href=\"{$phpfile}?page=".($page-1)."\"><</a>";
}
if ($pages > $pagelen) {
if ($page <= $pageoffset) {
$init = 1;
$max = $pagelen;
} else {
if ($page + $pageoffset >= $pages + 1) {
$init = $pages - $pagelen + 1;
} else {
$init = $page - $pageoffset;
$max = $page + $pageoffset;
}
}
}
for ($i = $init; $i <= $max; $i++) {
if ($i == $page) {
$pagecode .= '<span>'.$i.'</span>';
} else {
$pagecode .= "<a href=\"{$phpfile}?page={$i}\">$i</a>";
}
}
if ($page != $pages) {
$pagecode .= "<a href=\"{$phpfile}?page=".($page+1)."\">></a>";
$pagecode .= "<a href=\"{$phpfile}?page={$pages}\">>></a>";
}
$pagecode .= '</div>';
return array('pagecode' => $pagecode, 'sqllimit' => ' limit '.$offset.','.$pagesize);
}
?>