免费注册 查看新帖 |

Chinaunix

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

一个浅显易懂的分页类 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-18 14:19 |只看该作者 |倒序浏览
query($sql);
  $db->next_record();
  $recordcount = $db->f(0);//记录总数
  
  $p = new page($recordcount, 20, 15);//(总记录数,每页记录数,每面页码个数)
  $p->ar = array("«首页", "‹前页", "后页›", "末页»");//可以设置成图片HTML代码
  $trunpage = $p->show_page();//得到分页信息
  
  $sql = "select * from t_publiccode".$p->limit();
  
  //echo $trunpage."
".$sql;
  $db->query($sql);
  //...
  
  类似效果:
  共[52600]条记录/共[2630]页  末页>>
  */
var $pagecount;         //总页数

var $limit = "";        //分页时用到的limit参数

var $pagearg = "page";  //分页参数名称

var $pagesize = 20;     //每页显示记录数

var $recordcount;       //总记录数

var $pagenum;           //当前页码

var $argstr = "";       //GET参数字符串

var $perpage = 5;       //每次显示页码个数

var $ar = array("[«]", "[‹]", "[›]", "[»]");

/*
  * 功能:构造函数
  * 参数 $recordcount 为记录总数
  * 参数 $pagesize 为每页显示记录数,默认为20
  * 参数 $perpage 为每次显示页码个数,默认为5
  */
function page($recordcount, $pagesize = 20, $perpage = 5){
   
   $this->pagesize = $pagesize;
   
   $this->recordcount = $recordcount;
   
   $this->perpage = $perpage;
   
   $this->pagecount = ceil($recordcount/$pagesize);//总页数
   
   $this->pagenum = $this->currentpage();//当前页码
   
   $this->argstr = $this->newarg();//GET参数字符串
   
   $this->limit = " LIMIT ".($this->pagenum-1)*$pagesize.",".$pagesize;//分页时用到的limit参数
}

/*
  * 功能:取得当前页码函数
  */
function currentpage(){
  if(isset($_GET[$this->pagearg])){
   if($_GET[$this->pagearg] pagearg] > $this->pagecount){
     $page = $this->pagecount;
   }else{
     $page = $_GET[$this->pagearg];
   }
  }else {
   $page = 1;
  }
  return $page;
}

/*
  * 功能:重新整理GET参数
  */
function newarg(){
  $str = "";
  $urlar = $_GET;
  unset($urlar[$this->pagearg]);
  if($urlar){
   foreach($urlar as $key=>$val){
    if($str == "") {
   $str = "?$key=$val";
}else {
   $str .= "&$key=$val";
}
   }
   $str .= "&$this->pagearg=";
  }else{
   $str = "?$this->pagearg=";
  }
  return $str;
}

/*
  * 功能:返回MYSQL语句的limit部分代码
  */
function limit(){
  return $this->limit;
}
/*
  * 功能:分页字符输出函数
  */
function show_page(){
  $trunpage = " 共[".$this->recordcount."]条记录/共[".$this->pagecount."]页 ";
  $page = $this->pagenum;
  
  //向前翻
  if($page == 1){
   $trunpage .= $this->ar[0]." ".$this->ar[1]." ";
  }else {
   $trunpage .= 'argstr.'1">'.$this->ar[0].' argstr.($page-1).'">'.$this->ar[1].' ';
  }
  
  //中间数字翻页
  $numpage = 1;
  while($page - $this->perpage * $numpage > 0) $numpage++;
  $startpage = ($numpage - 1) * $this->perpage;
  $endpage = $this->pagecount perpage ? $this->pagecount : $numpage * $this->perpage;
  for($i = $startpage + 1; $i argstr.$i."\">$i " : "".$i." ";
  }
  
  //向后翻
  if($page == $this->pagecount || $this->pagecount == 0){
   $trunpage .= $this->ar[2]." ".$this->ar[3]." ";
  }else {
   $trunpage .= 'argstr.($page+1).'">'.$this->ar[2].' argstr.$this->pagecount.'">'.$this->ar[3].' ';
  }
  
  //跳转
  $select = "\n";
  for($i = 1; $i pagecount; $i++){
   $select .= "argstr.$i."\">$i\n";
  }
  $select .= "";
  return $trunpage.$select;
}
}
?>



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13004/showart_68829.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP