Chinaunix首页 | 论坛 | 博客
  • 博客访问: 267629
  • 博文数量: 82
  • 博客积分: 2477
  • 博客等级: 大尉
  • 技术积分: 725
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-06 23:24
文章分类

全部博文(82)

文章存档

2013年(1)

2012年(3)

2011年(15)

2010年(36)

2009年(27)

分类: 系统运维

2011-05-31 13:53:55

    大家好,近来发现一个不错的分页类(感谢编写此类的作者:biuuu),代码如下:

class PagerBox {
 /**
  * 分页器
  * @author biuuu 2009-3-5
  * @copyright
  */
 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 .= '

';
  $html .= $this->getPreHTML ( $page, $url );
  $html .= $this->getPages ( $page, $url, $currentNum, $length, $pageNum );
  $html .= $this->getNextHTML ( $page, $url, $pageNum );
  $html .= '
';
  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 ' ' . $text . '';
 }
 /**
  * 创建a元素
  *
  * @param string $text
  * @param string $url
  * @return html
  */
 private function getAHtml($text, $url) {
  return ' ' . $text . '';
 }
 /**
  * 获取默认CSS样式
  *
  * @return css
  */
 private function getDefaultCss() {
  $css = '';
  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!

阅读(847) | 评论(0) | 转发(0) |
0

上一篇:SVG图片生成

下一篇:推荐某CUer的监控帖子

给主人留下些什么吧!~~