该函数在 ./include/global.func.php 文件中定义。函数原型为:
string multi(int $num, int $perpage, int $curpage, string $mpurl[, int $maxpages[, int $page[, bool $autogoto[, bool $simple]]]])
$num: 总记录数
$perpage: 每页记录数
$curpage: 当前页数
$mpurl: 除页变量外 URL
$maxpages: 最大页面值
function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = TRUE, $simple = FALSE) { global $maxpage; $ajaxtarget = !empty($_GET['ajaxtarget']) ? " ajaxtarget=\"".dhtmlspecialchars($_GET['ajaxtarget'])."\" " : ''; $multipage = ''; $mpurl .= strpos($mpurl, '?') ? '&' : '?'; $realpages = 1; if($num > $perpage) { $offset = 2; $realpages = @ceil($num / $perpage); $pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages; if($page > $pages) { $from = 1; $to = $pages; } else { $from = $curpage - $offset; $to = $from + $page - 1; if($from < 1) { $to = $curpage + 1 - $from; $from = 1; if($to - $from < $page) { $to = $page; } } elseif($to > $pages) { $from = $pages - $page + 1; $to = $pages; } } $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="'.$mpurl.'page=1"'.$ajaxtarget.'>1 ...</a>' : ''). ($curpage > 1 && !$simple ? '<a href="'.$mpurl.'page='.($curpage - 1).'"'.$ajaxtarget.'>‹‹</a>' : ''); for($i = $from; $i <= $to; $i++) { $multipage .= $i == $curpage ? '<strong>'.$i.'</strong>' : '<a href="'.$mpurl.'page='.$i.($ajaxtarget && $i == $pages && $autogoto ? '#' : '').'"'.$ajaxtarget.'>'.$i.'</a>'; } $multipage .= ($curpage < $pages && !$simple ? '<a href="'.$mpurl.'page='.($curpage + 1).'"'.$ajaxtarget.'>››</a>' : ''). ($to < $pages ? '<a href="'.$mpurl.'page='.$pages.'"'.$ajaxtarget.'>... '.$realpages.'</a>' : ''). (!$simple && $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3" onkeydown="if(event.keyCode==13) {window.location=\''.$mpurl.'page=\'+this.value; return false;}" /></kbd>' : ''); $multipage = $multipage ? '<div>'.(!$simple ? '<em> '.$num.' </em>' : '').$multipage.'</div>' : ''; } $maxpage = $realpages; return $multipage; }
使用:
$pagesize = 20; // 每页记录数 $query = $db->query("SELECT COUNT(*) FROM table"); $amount = $db->result($query, 0); // 查询记录总数 $pagecount = $amount ? (($amount < $pagesize) ? 1 : (($amount % $pagesize) ? ((int)($amount / $pagesize) + 1) : ($amount / $pagesize))) : 0; // 计算总页数 $page = !empty($_GET['page']) ? max(1, intval($_GET['page'])) : 1; $page = $page > $pagecount ? 1 : $page; // 取得当前页值 $startlimit = ($page - 1) * $pagesize; // 查询起始的偏移量 $query = $db->query("SELECT * FROM table LIMIT {$startlimit}, {$pagesize}"); // 查询记录集 $multipage = multi($amount, $pagesize, $page, 'page.php?get=string', $pagecount); // 显示分页