我用的php分頁類

來源:互聯網
上載者:User

<?php
/*
** File: class.pagenumber.php
** Class: PageNumber
** Version: none
** Created: 5/12/2004
** Author: Morgan Woo
** Email: morgan.woo@163.com
** Update:huabing lv
** Email:hb_lv@hotmail.com
**
** Copyright (c) 2004 Mr.Woo .  All rights reserved.
*/

class Pager{

   //產生的頁碼(事實上不用也行)
   var $pageNumber='';
   
   //需要分類的條目總數
    var $totalItems=0;
    //資料連線相關
   var $conn;
   var $sql;
   //每頁顯示幾個條目
   var $itemsPerPage=3;
   
   //總頁數
   var $totalPageNumber=0;
   //當前頁碼。
   var   $currentPageNumber=1;

   
   //一個頁面顯示幾個頁碼
   var $length=10;
   
   
   //需要分頁的url
   var $url='';

   function Pager($conn,$sql,$currentPageNumber,$itemsPerPage,$length,$url){
     $this->currentPageNumber=$currentPageNumber;
       $this->conn=$conn;
       $this->sql=$sql;
        $this->itemsPerPage=$itemsPerPage;
         $this->length=$length;
  $this->url=$url;
  $this->url.=(stristr($this->url,'?')!=false)?'&':'?';  //Url裡有"?"就加"&"沒有就加"?"
  $this->getTotalPageNumber();

   }
    function getTotalItems(){
     //for adodb
     $rs=$this->conn->Execute($this->sql);
     $this->totalItems=$rs->RecordCount();
     return $this->totalItems;
    }
     function getTotalPageNumber(){

      $this->totalPageNumber=ceil($this->getTotalItems()/$this->itemsPerPage);  
 return $this->totalPageNumber;
   }


   //SQL裡 LIMIT start,length 中的起始值
   function getLimitStart(){
      $start=($this->currentPageNumber-1)*$this->itemsPerPage;
      return $start;
   }
   //SQL裡 LIMIT start,length 中的length
   function getLimitItems(){
      return $this->itemsPerPage;
   }
   function getRsPerPage(){
     $modiSQL=$this->sql." limit ".$this->getLimitStart()." ,".$this->getLimitItems();
//偶用的是adodb的說
     $modiRS=$this->conn->Execute($modiSQL);
     $arr=$modiRS->GetArray();
     return $arr;
   }


   //主函數.中文分頁
   function getPageNumber(){
      if ($this->getTotalPageNumber()>1){
         
         $pageNumber='當前第'.$this->currentPageNumber.'頁/共'.$this->totalPageNumber.'頁';
          //顯示第一頁和前一頁
         if ($this->currentPageNumber>1){
    //第一頁
            //First Page
            $pageNumber.="<B><A HREF=".$this->url."page=1>第一頁</A> </B> ";
   //前一頁
            //Previous Page
            $pageNumber.="<B><A HREF=".$this->url."page=".($this->currentPageNumber-1).">前一頁</A> </B>";
         }
         //The start number is the first number of all pages which show on the current page.
         $startNumber=intval($this->currentPageNumber/$this->length)*$this->length;
         //Prev N page
   //交界處
         if ($this->currentPageNumber>=$this->length){
            $pageNumber.="[<B><A HREF=".$this->url."page=".($startNumber-1).">".($startNumber-1)."</A></B>]...";
         }
         
         $leftPageNumber=0;
         for ($i=$startNumber;$i<=$this->totalPageNumber;$i++){
            if ($i==0)continue;
            if ($i-$startNumber<$this->length){
               if ($i==$this->currentPageNumber){
                  $pageNumber.="[<b>$i</b>]";
               }else{
                  $pageNumber.="[<A HREF=".$this->url."page=".$i.">".$i."</A>]";
               }
            }else{
               $leftPageNumber=$this->totalPageNumber-$i+1;
               break;
            }
         }

   //顯示下一個分頁列表
         if ($leftPageNumber>=1){
            $pageNumber.="...[<B><A HREF=".$this->url."page=".($startNumber+$this->length).">".($startNumber+$this->length)."</A></B>] ";
         }
         
         if ($this->currentPageNumber!=$this->totalPageNumber){
            //Next page
            $pageNumber.="<B><A HREF=".$this->url."page=".($this->currentPageNumber+1).">下一頁</A> </B>";
            //Last page
            $pageNumber.="<B><A HREF=".$this->url."page=".$this->totalPageNumber.">最後頁</A> </B>";
         }
         
         $this->pageNumber=$pageNumber;
         return $this->pageNumber;
         
      }
      
      
   }
   
 
//英文分頁
function getPageNumber2(){
      if ($this->getTotalPageNumber()>1){
         
         $pageNumber='P'.$this->currentPageNumber.'/'.$this->totalPageNumber.'';
          //顯示第一頁和前一頁
         if ($this->currentPageNumber>1){
    //第一頁
            //First Page
            $pageNumber.="<B><A HREF=".$this->url."page=1>FIRST</A> </B> ";
   //前一頁
            //Previous Page
            $pageNumber.="<B><A HREF=".$this->url."page=".($this->currentPageNumber-1).">PREV</A> </B>";
         }
         //The start number is the first number of all pages which show on the current page.
         $startNumber=intval($this->currentPageNumber/$this->length)*$this->length;
         //Prev N page
   //交界處
         if ($this->currentPageNumber>=$this->length){
            $pageNumber.="[<B><A HREF=".$this->url."page=".($startNumber-1).">".($startNumber-1)."</A></B>]...";
         }
         
         $leftPageNumber=0;
         for ($i=$startNumber;$i<=$this->totalPageNumber;$i++){
            if ($i==0)continue;
            if ($i-$startNumber<$this->length){
               if ($i==$this->currentPageNumber){
                  $pageNumber.="[<b>$i</b>]";
               }else{
                  $pageNumber.="[<A HREF=".$this->url."page=".$i.">".$i."</A>]";
               }
            }else{
               $leftPageNumber=$this->totalPageNumber-$i+1;
               break;
            }
         }

   //顯示下一個分頁列表
         if ($leftPageNumber>=1){
            $pageNumber.="...[<B><A HREF=".$this->url."page=".($startNumber+$this->length).">".($startNumber+$this->length)."</A></B>] ";
         }
         
         if ($this->currentPageNumber!=$this->totalPageNumber){
            //Next page
            $pageNumber.="<B><A HREF=".$this->url."page=".($this->currentPageNumber+1).">NEXT</A> </B>";
            //Last page
            $pageNumber.="<B><A HREF=".$this->url."page=".$this->totalPageNumber.">LAST</A>  </B>";
         }
         
         $this->pageNumber=$pageNumber;
         return $this->pageNumber;
         
      }
      
      
   }
   
}
//$currentPageNumber=( isset($_GET['page']) ) ? intval($_GET['page']) : 1;
//include("PAGENUMBER/class.pagenumber.php");
//$pageNumber= new PageNumber($adodbConn,$sql,$currentPageNumber,10,3,3,"test.php");
//echo $pageNumber->getPageNumber2();
//echo "<br>";
//echo $pageNumber->getPageNumber();
?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.