免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1356 | 回复: 0
打印 上一主题 下一主题

一个不错的PHP分页类 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:44 |只看该作者 |倒序浏览

    大家好,近来发现一个不错的分页类(感谢编写此类的作者: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!

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP