adodb和smarty分页类

  1. <?php   
  2.     class show_Pager   
  3.     {   
  4.       protected  $_total;                          //记录总数   
  5.       protected  $pagesize;                       //每一页显示的记录数   
  6.       public     $pages;                         //总页数   
  7.       protected  $_cur_page;                    //当前页码   
  8.       protected  $offset;                      //记录偏移量   
  9.       protected  $pager_Links;                //url连接   
  10.       protected  $pernum = 5;                //页码偏移量,这里可随意更改   
  11.        
  12.       public function __construct($total,$pagesize,$_cur_page)   
  13.         {      
  14.         $this->_total=$total;   
  15.         $this->pagesize=$pagesize;   
  16.         $this->_offset();   
  17.         $this->_pager();   
  18.         $this->cur_page($_cur_page);   
  19.         $this->link();   
  20.     }   
  21.        
  22.     public  function _pager()//计算总页数   
  23.     {    
  24.     return $this->pages = ceil($this->_total/$this->pagesize);   
  25.     }   
  26.       
  27.       
  28.     public function cur_page($_cur_page//设置页数   
  29.     {        
  30.                if (isset($_cur_page))   
  31.            {   
  32.            $this->_cur_page=intval($_cur_page);   
  33.            }   
  34.            else  
  35.            {   
  36.             $this->_cur_page=1; //设置为第一页   
  37.            }   
  38.         return  $this->_cur_page;   
  39.    }   
  40.       
  41. //数据库记录偏移量   
  42.    public function _offset()   
  43.    {   
  44.    return $this->offset=$this->pagesize*($this->_cur_page-1);   
  45.    }   
  46.       
  47.   //html连接的标签    
  48.   public function link()   
  49.   {   
  50.     if ($this->_cur_page == 1 && $this->pages>1)    
  51.         {   
  52.             //第一页   
  53.             $this->pager_Links = "首 页 | 上一页 | <a href=".$PHP_SELF."?pager=".($this->_cur_page+1).">下一页</a> | <a href=".$PHP_SELF."?pager=$this->pages>尾 页</a>";   
  54.         }    
  55.         elseif($this->_cur_page == $this->pages && $this->pages>1)    
  56.         {   
  57.             //最后一页   
  58.              $this->pager_Links = "<a href=".$PHP_SELF."?pager=1>首 页<a> | <a href=".$PHP_SELF."?pager=".($this->_cur_page-1).">上一页</a> | 下一页 | 尾 页";   
  59.         }    
  60.         elseif ($this->_cur_page > 1 && $this->_cur_page <= $this->pages)    
  61.         {   
  62.             //中间   
  63.              $this->pager_Links = "<a href=".$PHP_SELF."?pager=1>首 页<a> | <a href=".$PHP_SELF."?pager=".($this->_cur_page-1).">上一页</a> | <a href=".$PHP_SELF."?pager=".($this->_cur_page+1).">下一页</a> | <a href=".$PHP_SELF."?pager=$this->pages>尾 页</a>";   
  64.         }    
  65.         return $this->pager_Links;   
  66.   }   
  67.      
  68.   //html数字连接的标签   
  69.    public function num_link()   
  70.   {   
  71.        $setpage  = $this->_cur_page ? ceil($this->_cur_page/$this->pernum) : 1;   
  72.         $pagenum   = ($this->pages > $this->pernum) ? $this->pernum : $this->pages;   
  73.         if ($this->_total  <= $this->pagesize) {   
  74.             $text  = ‘只有一页’;   
  75.         } else {   
  76.             $text = ‘页数:’.$this->pages.‘ ‘.$this->pagesize.‘个/页 ‘;   
  77.             if ($this->_cur_page > 1) {   
  78.                 $text .= ‘<a title=第一页 href=?pager=1>[1]</a>..’;   
  79.             }   
  80.             if ($setpage > 1) {   
  81.                 $lastsetid = ($setpage-1)*$this->pernum;   
  82.                 $text .= ‘<a title=上一列 href=?pager=’.$lastsetid.‘>[<<]</a>’;   
  83.             }   
  84.             if ($this->_cur_page > 1) {   
  85.                 $pre = $this->_cur_page-1;   
  86.                 $text .= ‘<a title=上一页 href=?pager=’.$pre.‘>[<]</a>’;   
  87.             }   
  88.             $i = ($setpage-1)*$this->pernum;   
  89.             for($j=$i$j<($i+$pagenum) && $j<$this->pages; $j++) {   
  90.                 $newpage = $j+1;   
  91.                 if ($this->_cur_page == $j+1) {   
  92.                     $text .= ‘<b>[‘.($j+1).‘]</b>’;   
  93.                 } else {   
  94.                     $text .= ‘<a href=?pager=’.$newpage.‘>[‘.($j+1).‘]</a>’;   
  95.                 }   
  96.             }               
  97.             if ($this->_cur_page < $this->pages){   
  98.                 $next = $this->_cur_page+1;   
  99.                 $text .= ‘<a title=下一页 href=?pager=’.$next.‘>[>]</a>’;   
  100.             }   
  101.             if ($setpage < $this->_total) {   
  102.                 $nextpre = $setpage*($this->pernum+1);   
  103.                 if($nextpre<$this->pages)   
  104.                 $text .= ‘<a title=下一列 href=?pager=’.$nextpre.‘>[>>]</a>’;   
  105.             }   
  106.             if ($this->_cur_page < $this->pages) {   
  107.                 $text .= ‘..<a title=最后一页 href=?pager=’.$this->pages.‘>[‘.$this->pages.‘]</a>’;   
  108.             }   
  109.          }   
  110.             return $text;   
  111.          }   
  112.     }   
  113. //$conn,$tpl 全局变量 传入 $table是数据表 $where 是条件语句 $order 是ADSC之类的,$pager_size是每页显示数,$pager是当前页   
  114. //返回后在摸板里面可以直接使用    
  115. <{section name=sec loop=$show}>  <{/section}>   
  116. 数字标签用<{$numlink}>   
  117.     class my_Pager extends show_Pager   
  118.     {   
  119.         function __construct($table,$where,$order,$pager_size,$pager)   
  120.         {   
  121.          global $conn;   
  122.          global $tpl;   
  123.          $sql="Select * FROM `$table` $where order by $order desc";   
  124.          $nums=$conn->Execute($sql)->RecordCount();   
  125.          $pager=new show_Pager($nums,$pager_size,$pager);   
  126.          $show=$conn->SelectLimit($sql,$pager_size,$pager->_offset())->GetAll();   
  127.          $tpl->assign("numlink",$pager->num_link());//数字标签   
  128.          $tpl->assign("show",$show);//显示帖子   
  129.         }   
  130.     }   
  131. ?>  

Leave a Reply