大家好,近来发现一个不错的分页类(感谢编写此类的作者:biuuu),代码如下:
class PagerBox { /** * 分页器 * @author biuuu 2009-3-5 * @copyright www.biuuu.com */ const PRE = '上一页'; const NEXT = '下一页'; /** * 获取分页 * * @param int $page 当前页 * @param int $totalNum 总页数 * @param int $perPage 每页显示记录数 * @param string $url 页面跳转URL * @param int $length 页面步长值 * @param string $class 分页器样式 * @param bool $iscss 是否需要内置CSS * @return html */ public function getPager($totalNum, $page, $url, $perPage, $length = '5', $class = 'pages', $default = FALSE) { $pageNum = ceil ( $totalNum / $perPage ); $currentNum = ($page) ? $page : 1; $html = ''; $html .= ($default) ? $this->getDefaultCss () : ''; $html .= '<div class="' . $class . '">'; $html .= $this->getPreHTML ( $page, $url ); $html .= $this->getPages ( $page, $url, $currentNum, $length, $pageNum ); $html .= $this->getNextHTML ( $page, $url, $pageNum ); $html .= '</div>'; return $html; } /** * 获取上一页HTML * * @param int $page * @param string $url * @return html */ private function getPreHTML($page, $url) { $html = ''; if (($page - 1) == 0) { $html .= $this->getHTML ( self::PRE ); } else { $html .= $this->getHTML ( self::PRE, TRUE, $this->getURL ( $url, ($page - 1) ) ); } return $html; } /** * 获取页HTML * * @param int $page * @param string $url * @param int $currentNum * @param int $pageLength * @param int $pageNum * @return html */ private function getPages($page, $url, $currentNum, $length, $pageNum) { $html = ''; $start = ceil ( $page / $length ); $start = ($start - 1) * $length + 1; $end = $start + $length - 1; $end = ($end > $pageNum) ? $pageNum : $end; for($i = $start; $i <= $end; $i ++) { if ($currentNum == $i) { $html .= $this->getHTML ( $i ); continue; } $html .= $this->getHTML ( $i, TRUE, $this->getURL ( $url, $i ) ); } return $html; } /** * 获取下一页HTML * * @param int $page * @param string $url * @param int $pageNum * @return html */ private function getNextHTML($page, $url, $pageNum) { $html = ''; if (($page - $pageNum) == 0) { $html .= $this->getHTML ( self::NEXT ); } else { $html .= $this->getHTML ( self::NEXT, TRUE, $this->getURL ( $url, ($page + 1) ) ); } return $html; } /** * 获取分页HTML * * @param string $text * @param bool $isUrl * @param string $url * @param string $class * @return html */ private function getHTML($text, $isUrl = FALSE, $url = '', $class = '') { if ($isUrl) { return $this->getAHtml ( $text, $url ); } return $this->getSpanHtml ( $text, $class ); } /** * 创建URL * * @param string $url * @param int $page * @return url */ private function getURL($url, $page) { if(strstr($url, '?') !=""){ $url .= '&'; }else{ $url .= '?'; } $url .= 'page='.$page; return $url; } /** * 创建span元素 * * @param string $text * @param string $class * @return html */ private function getSpanHtml($text, $class = '') { $class = ($class) ? 'class=' . $class : ''; return ' <span ' . $class . '>' . $text . '</span>'; } /** * 创建a元素 * * @param string $text * @param string $url * @return html */ private function getAHtml($text, $url) { return ' <a href="' . $url . '">' . $text . '</a>'; } /** * 获取默认CSS样式 * * @return css */ private function getDefaultCss() { $css = '<style type="text/css">'; $css .= '.pages {margin:0 auto;padding-right:40px;text-align:center;} .pages a, .pages span {display:inline-block;*display:inline;zoom:1;padding:0px 6px;height:21px;line-height:21px;font-size:12px;font-weight:100;background:#F5F8FF;overflow:hidden;} .pages a {border:1px solid #D8E0ED;} .pages span {border:1px solid #dddddd;background:#FFFFFF;color:#999999;} a{text-decoration:none;color:#666666;} a:hover{text-decoration:underline;color:#0657b2;}'; $css .= '</style>'; return $css; }
}
?>
我在使用此类是的具体操作方法为:
/***************************************************************** ** pagerbox 使用方法如下 ****************************************************************** ** // 页面设置如下参数: ** include_once("../include/pagerBox.php"); ** $totalNum = count($arr_data); //总数 ** $page = isset($_GET ['page']) ? $_GET['page'] : 1; //当前页数 ** $perPage = 3; //每页显示记录 ** $url = $_SERVER['PHP_SELF']; //默认当前URL ** $length = 5; //每页显示步长 ** $class = 'pages'; //分页器CSS样式 ** $curStartNum = ($page-1)*$perPage; //本页第一条记录index ** // 本页最后一条记录index+1 ** $curEndNum = $page*$perPage>=$totalNum ? $totalNum : $page*$perPage; ** ** for($j= $curStartNum; $j<$curEndNum; $j++){ ** // 在此处处理你的数据数组arr_data ** } ** ** // 在页面适当位置,插入如下代码,显示分页 ** $pagerBox = new PagerBox(); ** echo $pagerBox->getPager($totalNum, $page, $url, $perPage, $length, $class, TRUE); ** ** Notice: ** 如果分页所在的页面需要传入参数,则需要将参数加入到session中, ** 然后,在分页链接中加入需要的参数。 ** 例如:如果页面需要参数comid,则可以做如下操作: ** if(isset($_GET['comid'])){ ** $_SESSION['comid'] = $_GET['comid']; ** }else{ ** $_SESSION['comid'] = $_POST['comid']; ** } ** ** 分页url设置: ** $url = $_SERVER['PHP_SELF']."?comid=".$_SESSION['comid']; ** *******************************************************************/
这个是后来我加到原作者的类文件中的头,以便以后做分页的时候,可以方便使用,再次感谢编写此类的biuuu! |