PHP分页函数(PHP代码+JS+CSS完整实例)_PHP教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:php环境搭建:PHPnow绿色PHP环境包
很多新手朋友,想学习建站,使用现在比较热门的基于PHP开发的CMS系统,碰到的第一个问题就是如何搭建PHP环境. 网上有很多PHP集成环境的程序,模板无忧会在近期一一为大家讲解常见的PHP环境搭建程序的安装和使用方法. 今天为大家介绍一款绿色的PHP环境包,也是站长本人一直在

 PHP分页函数(PHP代码+JS+CSS完整实例)
PHP分页器制作,自动生成分面页码,JS调用函数.
PHP代码如下:
  1. <?php 
  2. class PageView{ 
  3.     /**页码**/ 
  4.     public $pageNo = 1; 
  5.     /**页大小**/ 
  6.     public $pageSize = 20; 
  7.     /**共多少页**/ 
  8.     public $pageCount = 0; 
  9.     /**总记录数**/ 
  10.     public $totalNum = 0; 
  11.     /**偏移量,当前页起始行**/ 
  12.     public $offSet = 0; 
  13.     /**每页数据**/ 
  14.     public $pageData = array(); 
  15.      
  16.     /**是否有上一页**/ 
  17.     public $hasPrePage = true; 
  18.     /**是否有下一页**/ 
  19.     public $hasNextPage = true; 
  20.      
  21.     public $pageNoList = array(); 
  22.      
  23.     public $jsFunction ='jsFunction'
  24.     /** 
  25.      *  
  26.      * @param unknown_type $count 总行数 
  27.      * @param unknown_type $size 分页大小 
  28.      * @param unknown_type $string 
  29.      */ 
  30.     public function __construct($count=0, $size=20,$pageNo=1,$pageData =array(),$jsFunction='jsFunction'){ 
  31.  
  32.         $this->totalNum = $count;//总记录数 
  33.         $this->pageSize = $size;//每页大小 
  34.         $this->pageNo = $pageNo
  35.         //计算总页数 
  36.         $this->pageCount = ceil($this->totalNum/$this->pageSize); 
  37.         $this->pageCount = ($this->pageCount<=0)?1:$this->pageCount; 
  38.         //检查pageNo 
  39.         $this->pageNo = $this->pageNo == 0 ? 1 : $this->pageNo; 
  40.         $this->pageNo = $this->pageNo > $this->pageCount? $this->pageCount : $this->pageNo; 
  41.          
  42.         //计算偏移 
  43.         $this->offset = ( $this->pageNo - 1 ) * $this->pageSize; 
  44.         //计算是否有上一页下一页 
  45.         $this->hasPrePage = $this->pageNo == 1 ?false:true;  
  46.  
  47.         $this->hasNextPage = $this->pageNo >= $this->pageCount ?false:true; 
  48.          
  49.         $this->pageData = $pageData
  50.         $this->jsFunction = $jsFunction
  51.          
  52.     } 
  53.     /** 
  54.      * 分页算法 
  55.      * @return 
  56.      */ 
  57.     private function generatePageList(){ 
  58.         $pageList = array(); 
  59.         if($this->pageCount <= 9){ 
  60.             for($i=0;$i<$this->pageCount;$i++){ 
  61.                 array_push($pageList,$i+1); 
  62.             } 
  63.         }else
  64.             if($this->pageNo <= 4){ 
  65.                 for($i=0;$i<5;$i++){ 
  66.                     array_push($pageList,$i+1); 
  67.                 } 
  68.                 array_push($pageList,-1); 
  69.                 array_push($pageList,$this->pageCount); 
  70.  
  71.             }else if($this->pageNo > $this->pageCount - 4){ 
  72.                 array_push($pageList,1); 
  73.                  
  74.                 array_push($pageList,-1); 
  75.                 for($i=5;$i>0;$i--){ 
  76.                     array_push($pageList,$this->pageCount - $i+1); 
  77.                 } 
  78.             }else if($this->pageNo > 4 && $this->pageNo <= $this->pageCount - 4){ 
  79.                 array_push($pageList,1); 
  80.                 array_push($pageList,-1); 
  81.                  
  82.                 array_push($pageList,$this->pageNo -2); 
  83.                 array_push($pageList,$this->pageNo -1); 
  84.                 array_push($pageList,$this->pageNo); 
  85.                 array_push($pageList,$this->pageNo + 1); 
  86.                 array_push($pageList,$this->pageNo + 2); 
  87.                  
  88.                 array_push($pageList,-1); 
  89.                 array_push($pageList,$this->pageCount); 
  90.                  
  91.             } 
  92.         } 
  93.         return $pageList
  94.     } 
  95.  
  96.     /*** 
  97.      * 创建分页控件 
  98.     * @param 
  99.     * @return String 
  100.     */ 
  101.     public function echoPageAsDiv(){ 
  102.         $pageList = $this->generatePageList(); 
  103.          
  104.         $pageString ="<div class='pagination'><div class='page-bottom'>"
  105.      
  106.         if(!emptyempty($pageList)){ 
  107.             if($this->pageCount >1){ 
  108.                 if($this->hasPrePage){ 
  109.                     $pageString = $pageString ."<a class='page-next' href=\"javascript:" .$this->jsFunction . "(" . ($this->pageNo-1) . ")\">上一页</a>"
  110.                 } 
  111.                 foreach ($pageList as $k=>$p){ 
  112.                     if($this->pageNo == $p){ 
  113.                         $pageString = $pageString ."<span class='page-cur'>" . $this->pageNo . "</span>"
  114.                         continue
  115.                     } 
  116.                     if($p == -1){ 
  117.                         $pageString = $pageString ."<span class='page-break'>...</span>"
  118.                         continue
  119.                     } 
  120.                     $pageString = $pageString ."<a href=\"javascript:" .$this->jsFunction . "(" . $p . ")\">" . $p . "</a>"
  121.                 } 
  122.                  
  123.                 if($this->hasNextPage){ 
  124.                     $pageString = $pageString ."<a class='page-next' href=\"javascript:" .$this->jsFunction . "(" . ($this->pageNo+1) . ")\">下一页</a>"
  125.                 } 
  126.                  
  127.             } 
  128.         } 
  129.         $pageString = $pageString .("</div></div>"); 
  130.         return $pageString
  131.     } 
  132.  
  133. ?> 
CSS代码如下:
  1. <style type="text/css"> 
  2. <!-- 
  3. .pagination {font-family: Tahoma;overflow: hidden; padding-top: 12px; text-align: center;} 
  4. .pagination-tab { margin-bottom: 20px;} 
  5. .pagination a, .pagination .page-cur, .pagination .page-prev_g, .pagination .page-prev, .pagination .page-next, .pagination .page-next_g, .pagination .page-break, .pagination .page-skip { 
  6.     display: inline-block;font-family: Tahoma,SimSun,Arial; height: 22px;line-height:22px; margin: 0; min-width: 16px;padding: 0 5px; text-align: center; vertical-align: top; white-space: nowrap;} 
  7. .pagination a, .pagination .page-prev_g, .pagination .page-prev, .pagination .page-next, .pagination .page-next_g, .pagination .page-cur, .pagination .page-break { 
  8.     border: 1px solid #ed3d83; color:#e9357d; font-weight:bold;} 
  9. .pagination a:hover { border: 1px solid #ed3d83;text-decoration: none; background-color:#f95f9d; color:#fff;} 
  10. .pagination .page-prev_g, .pagination .page-prev, .pagination .page-next, .pagination .page-next_g { width: 36px; background-image: url(../static/img/page.gif);} 
  11. .pagination .page-prev { background-position: -0px -38px; padding-left: 16px;} 
  12. .pagination .page-prev_g { background-position:0px -59px; padding-left: 16px; color:#cbcbcb; font-weight:normal;} 
  13. .pagination .page-next { background-position: 0px 0px; padding-right: 16px; font-weight:normal;} 
  14. .pagination .page-next_g { background-position: -0px -19px; padding-right: 16px; color:#cbcbcb;} 
  15. .pagination .page-cur {background-color: #f95f9d; border: 1px solid #ed3d83;color: #fff;font-weight: bold;} 
  16. .pagination .page-break {border: medium none; background:none transparent; color:#333;} 
  17.  
  18. --> 
  19. </style> 
PHP调用代码:
  1. $pageNo = $_GET['pageNo']; 
  2.         if(emptyempty($pageNo)){ 
  3.             $pageNo = 1; 
  4.         } 
  5.         //分页数据 
  6.         $pageData = News::getNewsPage($pageNo,$pageSize); 
  7.        //取得总行数 
  8.         $count = News::getNewsCount(); 
  9.         //创建分页器 
  10.         $p = new PageView($count['0']['TOTAL'],$pageSize,$pageNo,$pageData); 
  11.      //生成页码 
  12.         $pageViewString = $p->echoPageAsDiv(); 
效果图如下:

分享:PHP面向对象—单例模式
单例模式是设计模式中比较简单的模式,会在一些特殊的场影得以运用,比如:应用中只需要一个对象实例存在,这时使用单例模式能够节省内存。单例模式体现了面向对象封装特性中的单一职责和对象自治原则。 构建一个PHP的单例类需要以下要求: 构造函数为private,防止外

来源:未知//所属分类:PHP教程/更新时间:2012-12-17
相关PHP教程