Heim > php教程 > php手册 > php实现google样式的分页

php实现google样式的分页

WBOY
Freigeben: 2016-06-06 19:58:07
Original
1221 Leute haben es durchsucht

废话不多说,直接看代码吧 Pager.class.php 代码如下 class Pager{ /** *int总页数 **/ protected $pageTotal ; /** **/ protected $previous ; /** **/ protected $next ; /** *int中间页起始序号 **/ protected $startPage ; /** *int中间页终止序号 **/ pr

 废话不多说,直接看代码吧

 

Pager.class.php 代码如下

  1. class Pager {
  2.     /**
  3.      *int 总页数
  4.      * */
  5.     protected $pageTotal;
  6.     /**
  7.      * */
  8.     protected $previous;
  9.     /**
  10.      * */
  11.     protected $next;
  12.     /**
  13.      *int 中间页起始序号
  14.      * */
  15.     protected $startPage;
  16.     /**
  17.      *int 中间页终止序号
  18.      * */
  19.     protected $endPage;
  20.     /**
  21.      *int 记录总数
  22.      * */
  23.     protected $recorbTotal;
  24.     /**
  25.      *int 每页显示记录数
  26.      * */
  27.     protected $pageSize;
  28.     /**
  29.      *int 当前显示页
  30.      * */
  31.     protected $currentPage;
  32.     /**
  33.      *string 基url地址
  34.      * */
  35.     protected $baseUri;
  36.     
  37.     /**
  38.      * @return string 获取基url地址
  39.      */
  40.     public function getBaseUri() {
  41.         return $this->baseUri;
  42.     }
  43.     
  44.     /**
  45.      * @return int 获取当前显示页
  46.      */
  47.     public function getCurrentPage() {
  48.         return $this->currentPage;
  49.     }
  50.     
  51.     /**
  52.      * @return int 获取每页显示记录数
  53.      */
  54.     public function getPageSize() {
  55.         return $this->pageSize;
  56.     }
  57.     
  58.     /**
  59.      * @return int 获取记录总数
  60.      */
  61.     public function getRecorbTotal() {
  62.         return $this->recorbTotal;
  63.     }
  64.     
  65.     /**
  66.      * @param string $baseUri 设置基url地址
  67.      */
  68.     public function setBaseUri($baseUri) {
  69.         $this->baseUri = $baseUri;
  70.     }
  71.     
  72.     /**
  73.      * @param int $currentPage 设置当前显示页
  74.      */
  75.     public function setCurrentPage($currentPage) {
  76.         $this->currentPage=$currentPage;
  77.     }
  78.     
  79.     /**
  80.      * @param int $pageSize 设置每页显示记录数
  81.      */
  82.     public function setPageSize($pageSize) {
  83.         $this->pageSize = $pageSize;
  84.     }
  85.     
  86.     /**
  87.      * @param int $recorbTotal 设置获取记录总数
  88.      */
  89.     public function setRecorbTotal($recorbTotal) {
  90.         $this->recorbTotal = $recorbTotal;
  91.     }
  92.     
  93.     /**
  94.      *构造函数
  95.      * */
  96.     public function __construct()
  97.     {
  98.         $this->pageTotal = 0;
  99.         $this->previous = 0;
  100.         $this->next = 0;
  101.         $this->startPage = 0;
  102.         $this->endPage = 0;
  103.         
  104.         $this->pageSize = 20;
  105.         $this->currentPage = 0;
  106.     }
  107.     
  108.     /**
  109.      *分页算法
  110.      * */
  111.     private function arithmetic() {
  112.         if ($this->currentPage 
  113.             $this->currentPage = 1;
  114.         
  115.         $this->pageTotal = floor ( $this->recorbTotal / $this->pageSize ) + ($this->recorbTotal % $this->pageSize > 0 ? 1 : 0);
  116.         
  117.         if ($this->currentPage > 1 && $this->currentPage > $this->pageTotal)
  118.             header ( 'location:' . $this->baseUri . 'page=' . $this->pageTotal );
  119.         
  120.         $this->next = $this->currentPage + 1;
  121.         $this->previous = $this->currentPage - 1;
  122.         
  123.         $this->startPage = ($this->currentPage + 5) > $this->pageTotal ? $this->pageTotal - 10 : $this->currentPage - 5;
  124.         $this->endPage = $this->currentPage $this->currentPage + 5;
  125.         
  126.         if ($this->startPage 
  127.             $this->startPage = 1;
  128.         
  129.         if ($this->pageTotal $this->endPage)
  130.             $this->endPage = $this->pageTotal;
  131.     }
  132.     
  133.     /**
  134.      *分页样式
  135.      * */
  136.     protected function pageStyle() {
  137.         $result = "共" . $this->pageTotal . "页      ";
  138.         
  139.         if ($this->currentPage > 1)
  140.             $result .= " . $this->baseUri . "page=1/">9   . $this->baseUri . "page=$this->previous/">3";
  141.         else
  142.             $result .= "9 3";
  143.         
  144.         for($i = $this->startPage; $i $this->endPage; $i ++) {
  145.             if ($this->currentPage == $i)
  146.                 $result .= "  $i";
  147.             else
  148.                 $result .= "   . $this->baseUri . "page=$i/">$i";
  149.         }
  150.         
  151.         if ($this->currentPage != $this->pageTotal) {
  152.             $result .= "   . $this->baseUri . "page=$this->next/">4";
  153.             $result .= "   . $this->baseUri . "page=$this->pageTotal/">:";
  154.         } else {
  155.             $result .= 4 :";
  156.         }
  157.         return $result;
  158.     }
  159.     
  160.     /**
  161.      *执行分页
  162.      * */
  163.     public function execute() {
  164.         if ($this->baseUri != "" && $this->recorbTotal == 0)
  165.             return "";
  166.         $this->arithmetic();
  167.         return $this->pageStyle ();
  168.     }
  169. }

调用代码(test.php 代码如下)

  1. include_once 'Pager.class.php';
  2. $pager=new Pager();
  3. if (isset ( $_GET ['page'] ) && ! emptyempty ( $_GET ['page'] ))
  4.     $pager->setCurrentPage($_GET ['page']);
  5. else
  6.     $pager->setCurrentPage(1);
  7.     
  8. $pager->setRecorbTotal(1000);
  9. $pager->setBaseUri("test.php?");
  10. echo $pager->execute();

 

数据库结合 mysql 通用存储过程分页 海量数据分页  就是一个完美的分页了

 

我们还可继承 Pager 类重写pageStyle方法就可以有不同的样式了. yes ok

 

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage