免费注册 查看新帖 |

Chinaunix

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

一个分页类,大家批批 (增加一个分页函数) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-12 08:49 |只看该作者 |倒序浏览
  1. <?php
  2. /*
  3. ** File: class.pagenumber.php
  4. ** Class: PageNumber
  5. ** Version: none
  6. ** Created: 5/12/2004
  7. ** Author: Morgan Woo
  8. ** Email: morgan.woo@163.com
  9. **
  10. ** Copyright (c) 2004 Mr.Woo .  All rights reserved.
  11. */

  12. class PageNumber{

  13.         //生成的页码(事实上不用也行)
  14.         var $pageNumber='';
  15.        
  16.         //需要分类的条目总数
  17.         var $totalItems=0;
  18.         //每页显示几个条目
  19.         var $itemsPerPage=10;
  20.        
  21.         //总页数
  22.         var $totalPageNumber=0;
  23.         //当前页码!
  24.         var        $currentPageNumber=1;

  25.        
  26.         //一个页面显示几个页码
  27.         var $length=10;
  28.        
  29.        
  30.         //需要分页的url
  31.         var $url='';
  32.        
  33.        
  34.         //相关参数的设定
  35.         function setCurrentPageNumber($currentPageNumber){
  36.                 $this->;currentPageNumber=$currentPageNumber;
  37.         }
  38.        
  39.         function setTotalItems($totalItems){
  40.                 $this->;totalItems=$totalItems;
  41.         }
  42.        
  43.         function setItemsPerPage($itemsPerPage){
  44.                 $this->;itemsPerPage=$itemsPerPage;
  45.         }

  46.         function setLength($length=10){
  47.                 $this->;length=$length;
  48.         }
  49.        
  50.         function setUrl($url){
  51.                 $this->;url=$url;
  52.                 $this->;url.=(strpos($this->;url,'?')!=false)?'&':'?';//Url里有"?"就加"&"没有就加"?"
  53.         }
  54.        
  55.         function getTotalPageNumber(){
  56.                 $this->;totalPageNumber=ceil($this->;totalItems/$this->;itemsPerPage);
  57.                 return $this->;totalPageNumber;
  58.         }


  59.         //SQL里 LIMIT start,length 中的起始值
  60.         function getLimitStart(){
  61.                 $start=($this->;currentPageNumber-1)*$this->;itemsPerPage;
  62.                 return $start;
  63.         }
  64.         //SQL里 LIMIT start,length 中的length
  65.         function getLimitItems(){
  66.                 return $this->;itemsPerPage;
  67.         }


  68.         //主函数生成页码
  69.         function getPageNumber(){
  70.                 if ($this->;getTotalPageNumber()>;1){
  71.                        
  72.                         $pageNumber='P '.$this->;currentPageNumber.'/'.$this->;totalPageNumber.' ';
  73.                        
  74.                         if ($this->;currentPageNumber>;1){
  75.                                 //First Page
  76.                                 $pageNumber.="<A HREF=".$this->;url."page=1>;<<</A>; ";
  77.                                 //Previous Page
  78.                                 $pageNumber.="<B>;<A HREF=".$this->;url."page=".($this->;currentPageNumber-1).">;PREV</A>; </B>;";
  79.                         }
  80.                         //The start number is the first number of all pages which show on the current page.
  81.                         $startNumber=intval($this->;currentPageNumber/$this->;length)*$this->;length;
  82.                         //Prev N page
  83.                         if ($this->;currentPageNumber>;=$this->;length){
  84.                                 $pageNumber.="[<B>;<A HREF=".$this->;url."page=".($startNumber-1).">;".($startNumber-1)."</A>;</B>;]...";
  85.                         }
  86.                        
  87.                         $leftPageNumber=0;
  88.                         for ($i=$startNumber;$i<=$this->;totalPageNumber;$i++){
  89.                                 if ($i==0)continue;
  90.                                 if ($i-$startNumber<$this->;length){
  91.                                         if ($i==$this->;currentPageNumber){
  92.                                                 $pageNumber.="[<b>;$i</b>;]";
  93.                                         }else{
  94.                                                 $pageNumber.="[<A HREF=".$this->;url."page=".$i.">;".$i."</A>;]";
  95.                                         }
  96.                                 }else{
  97.                                         $leftPageNumber=$this->;totalPageNumber-$i+1;
  98.                                         break;
  99.                                 }
  100.                         }
  101.                         if ($leftPageNumber>;=1){
  102.                                 $pageNumber.="...[<B>;<A HREF=".$this->;url."page=".($startNumber+$this->;length).">;".($startNumber+$this->;length)."</A>;</B>;] ";
  103.                         }
  104.                        
  105.                         if ($this->;currentPageNumber!=$this->;totalPageNumber){
  106.                                 //Next page
  107.                                 $pageNumber.="<B>;<A HREF=".$this->;url."page=".($this->;currentPageNumber+1).">;NEXT</A>; </B>;";
  108.                                 //Last page
  109.                                 $pageNumber.="<A HREF=".$this->;url."page=".$this->;totalPageNumber.">;>;>;</A>; ";
  110.                         }
  111.                        
  112.                         $this->;pageNumber=$pageNumber;
  113.                         return $this->;pageNumber;
  114.                        
  115.                 }
  116.                
  117.                
  118.         }
  119.        
  120. }

  121. $currentPageNumber=( isset($_GET['page']) ) ? intval($_GET['page']) : 1;

  122. $pageNumber=new PageNumber;
  123. $pageNumber->;setCurrentPageNumber($currentPageNumber);
  124. $pageNumber->;setTotalItems(300);
  125. $pageNumber->;setItemsPerPage(10);
  126. $pageNumber->;setLength(10);
  127. $pageNumber->;setUrl('class.pagenumber.php');
  128. echo $pageNumber->;getPageNumber();

  129. //echo $pageNumber->;getLimitStart().'<br>;';
  130. //echo $pageNumber->;getLimitItems().'<br>;';

  131. ?>;
复制代码

论坛徽章:
0
2 [报告]
发表于 2004-05-12 08:57 |只看该作者

一个分页类,大家批批 (增加一个分页函数)

好dd,后面的内容加上注释就更好了

论坛徽章:
0
3 [报告]
发表于 2004-05-12 10:17 |只看该作者

一个分页类,大家批批 (增加一个分页函数)

[quote]原帖由 "huabingl"]好dd,后面的内容加上注释就更好了[/quote 发表:


人比较懒的缘故!保存为class.pagenumber.php就可以看到效果了!

这个分页类里面没有一句sql,所以通用性比较强。
具体的用法上面也有,就是:
  1. $currentPageNumber=( isset($_GET['page']) ) ? intval($_GET['page']) : 1;

  2. $pageNumber=new PageNumber;

  3. //获得get方式传递的当前页码,然后设定。把它get包含在类里也是可以的!
  4. $pageNumber->;setCurrentPageNumber($currentPageNumber);

  5. //设定需要分页的条目总数
  6. $pageNumber->;setTotalItems(300);
  7. //设定每页几个条目
  8. $pageNumber->;setItemsPerPage(10);

  9. //这是一个可选项,设定每页显示几个页码
  10. $pageNumber->;setLength(10);

  11. //设定需要添加页码的页面,我这里设成'class.pagenumber.php',那么把这段代码保存为class.pagenumber.php就可以看到效果了!
  12. $pageNumber->;setUrl('class.pagenumber.php');

  13. //取得页码
  14. echo $pageNumber->;getPageNumber();
复制代码

论坛徽章:
0
4 [报告]
发表于 2004-05-12 10:28 |只看该作者

一个分页类,大家批批 (增加一个分页函数)

怎样与sql结合呢?

无非就是select * from XXX limit numA, numB;
这个numB与function setItemsPerPage()设定的值是一样的,也可以用getLimitItems()获得。

numA要算一算:应该是: (当前的页码-1)*numB;懒得算的可以用getLimitStart()获得。

论坛徽章:
0
5 [报告]
发表于 2004-05-12 14:57 |只看该作者

一个分页类,大家批批 (增加一个分页函数)

农下来了,以后就找葫芦画瓢了

论坛徽章:
0
6 [报告]
发表于 2004-05-12 17:04 |只看该作者

一个分页类,大家批批 (增加一个分页函数)

事实上我平时用的是一个函数!功能与之类似!

论坛徽章:
0
7 [报告]
发表于 2004-05-12 18:05 |只看该作者

一个分页类,大家批批 (增加一个分页函数)

[quote]原帖由 "numlock"]事实上我平时用的是一个函数!功能与之类似![/quote 发表:


能不能把你的函数拿出来分享啊,谢谢啦啊。

论坛徽章:
0
8 [报告]
发表于 2004-05-15 01:37 |只看该作者

一个分页类,大家批批 (增加一个分页函数)

这位同志,你这个类的功能是出来了,可是很多值需要手动去设定,这样用起来比较麻烦,而且写sql语句也有点麻烦,能不能改进一下
longnetpro 该用户已被删除
9 [报告]
发表于 2004-05-15 07:55 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2004-05-15 16:28 |只看该作者

一个分页类,大家批批 (增加一个分页函数)

写类的时侯要尽量使类的成员变量私有,尽量不要从类处部操作类的成员变量,这你应该知道吧, 一个类不要让它做太多的事,要做到恬到好处, 我想一个分页类只要完成分页变量处理,打印飜页的页标, 查询数据库应该由别的相关类去完成,分页类只要得到它要处理的数据就行了,我也写了一个分页类. 你可以去看看, 大家交流交流呀.

http://bbs.chinaunix.net/forum/27/20040515/325374.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP