一个浅显易懂的分页类

原创 2005年04月24日 11:40:00

<?php
class page{
 /*
  类功能:分页
  创建时间:2005-03-12
  作者:多菜鸟
  EMAIL:kingerq AT msn.com
  来源:http://blog.csdn.net/kingerq
 
  实例:
  //省略一些连接信息及mysql类库等包含文件
  $sql = "select count(*) from t_publiccode";
  $db->query($sql);
  $db->next_record();
  $recordcount = $db->f(0);//记录总数
 
  $p = new page($recordcount, 20, 15);//(总记录数,每页记录数,每面页码个数)

  $p->ar = array("&laquo;首页", "&#8249;前页", "后页&#8250;", "末页&raquo;");//可以设置成图片HTML代码
  $trunpage = $p->show_page();//得到分页信息
 
  $sql = "select * from t_publiccode".$p->limit();
 
  //echo $trunpage."<br>".$sql;
  $db->query($sql);
  //...
 
  类似效果:
  共[52600]条记录/共[2630]页 <<首页 <前页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 后页> 末页>>
  */

 var $pagecount;         //总页数
 
 var $limit = "";        //分页时用到的limit参数
 
 var $pagearg = "page";  //分页参数名称
 
 var $pagesize = 20;     //每页显示记录数
 
 var $recordcount;       //总记录数
 
 var $pagenum;           //当前页码
 
 var $argstr = "";       //GET参数字符串
 
 var $perpage = 5;       //每次显示页码个数
 
 var $ar = array("[&laquo;]", "[&#8249;]", "[&#8250;]", "[&raquo;]");
 
 /*
  * 功能:构造函数
  * 参数 $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] <= 0) {
     $page = 1;
   }else if($_GET[$this->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 = "&nbsp;共[".$this->recordcount."]条记录/共[".$this->pagecount."]页&nbsp;";
  $page = $this->pagenum;
 
  //向前翻
  if($page == 1){
   $trunpage .= $this->ar[0]."&nbsp;".$this->ar[1]."&nbsp;";
  }else {
   $trunpage .= '<a href="'.$this->argstr.'1">'.$this->ar[0].'</a>&nbsp;<a href="'.$this->argstr.($page-1).'">'.$this->ar[1].'</a>&nbsp;';
  }
 
  //中间数字翻页
  $numpage = 1;
  while($page - $this->perpage * $numpage > 0) $numpage++;
  $startpage = ($numpage - 1) * $this->perpage;
  $endpage = $this->pagecount < $numpage * $this->perpage ? $this->pagecount : $numpage * $this->perpage;
  for($i = $startpage + 1; $i <= $endpage; $i++){
    $trunpage .= $i != $page ? "<a href=/"".$this->argstr.$i."/">$i</a>&nbsp;" : "<strong>".$i."</strong>&nbsp;";
  }
  
  //向后翻
if($page == $this->pagecount || $this->pagecount == 0){
$trunpage .= $this->ar[2]."&nbsp;".$this->ar[3]."&nbsp;";
}else {
$trunpage .= '<a href="'.$this->argstr.($page+1).'">'.$this->ar[2].'</a>&nbsp;<a href="'.$this->argstr.$this->pagecount.'">'.$this->ar[3].'</a>&nbsp;';
}  

  //跳转
  $select = "<select onchange='location.href=this.options[this.selectedIndex].value'>/n";
  for($i = 1; $i <= $this->pagecount; $i++){
   $select .= "<option value=/"".$this->argstr.$i."/">$i</option>/n";
  }
  $select .= "</select>";
  return $trunpage.$select;
 }
}
?>

什么是面向对象,什么是面向过程

什么是面向对象,什么是面向过程 面向对象: 把软件组织成一系列离散的,合并了数据结构和行为的对象.   类中的大部分数据,只能用本类的方法进行处理. 类通过一个简单的外部接口与外界发生关系,...
  • ZhangKaiX235
  • ZhangKaiX235
  • 2017年06月01日 18:58
  • 167

什么是面向对象对象,什么是面向过程,什么是面向对象思想。

面向对象思想————不看后悔! ————转载自:https://zhidao.baidu.com/question/751474259711412524.html 前言: 整理这份资料的目的是为了帮...
  • czh500
  • czh500
  • 2017年09月30日 00:26
  • 219

Vmware虚拟网络详解(太详细了,讲的很浅显易懂。。。。。。。。。。)

网络基础 Vmware 提供了几种你可以为虚拟机配置虚拟网络的方法。 虚拟网络组件 1、虚拟交换机 就像真实的物理交换机一样,一台虚拟交换机让你将其它的网络组件连接到一起。虚拟交换机可以根据需...
  • kouwoo
  • kouwoo
  • 2014年11月07日 14:20
  • 849

PHP通用分页类

PHP通用分页类
  • netuser1937
  • netuser1937
  • 2017年02月04日 15:08
  • 335

定义大数据:浅显易懂的大数据入门

当前,众多企业都面对从四面八方涌来的数据流的冲击。涓涓细流汇成大河,而科技企业、专家、分析师和技术顾问们纷纷将这条数据之河定义为大数据。但是,在这些众说纷纭的大数据定义中,不乏大量的常见误解。大量的企...
  • wangloveall
  • wangloveall
  • 2012年09月16日 13:12
  • 3473

一个java分页类

Java代码   /**   * 封装分页信息   *    */   public class Pagination implements Serializable{    ...
  • Baple
  • Baple
  • 2015年03月19日 15:55
  • 1913

紫书第六章-----数据结构基础(拓扑排序)

说明:本文章参考刘汝佳《算法竞赛入门经典》(第2版) 拓扑排序 关于拓扑排序最经典的问题应该是排课程的问题,在此不再赘述。举一个例子,已知aa,b,c,d从小到大的顺序可能是a,c,d,b...
  • ccnuacmhdu
  • ccnuacmhdu
  • 2018年01月25日 15:10
  • 16

如何优雅的写一个分页代码(三)

此分页的步骤完全是按照:见我的博客http://blog.csdn.net/u014010769/article/details/45720723,这个图的步骤来写分页的 1.写PageBean类,见...
  • u014010769
  • u014010769
  • 2015年05月15日 22:03
  • 1037

一个分页类

一个分页类PagesManagerpublic class PagesManager{    private readonly int RECORED_COUNT_PER_PAGE;    priva...
  • ahshow
  • ahshow
  • 2007年08月01日 17:32
  • 469

叶子分页类2

Rem =================================================================Rem = RCSfile:Cls_Pages.aspRem ...
  • hongliya
  • hongliya
  • 2005年01月10日 16:58
  • 1191
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个浅显易懂的分页类
举报原因:
原因补充:

(最多只允许输入30个字)