Home >php教程 >php手册 >ADODB和SMARTY结合的分页类

ADODB和SMARTY结合的分页类

WBOY
WBOYOriginal
2016-06-21 09:05:452158browse

ado|分页

/*
+-----------------------------------------------------------------------+
| 作者:一天空一(曾用名:亿时代网络)
| 网址:www.phpwb.com www.esdwl.com
| Q Q: 31769416
| 时间:2006-05-03                                 
|+-----------------------------------------------------------------------+
*/
    class show_Pager
    {
      protected  $_total;                          //记录总数
      protected  $pagesize;                       //每一页显示的记录数
      public     $pages;                         //总页数
      protected  $_cur_page;                    //当前页码
      protected  $offset;                      //记录偏移量
      protected  $pager_Links;                //url连接
      protected  $pernum = 5;                //页码偏移量,这里可随意更改
   
      public function __construct($total,$pagesize,$_cur_page)
        {   
        $this->_total=$total;
        $this->pagesize=$pagesize;
        $this->_offset();
        $this->_pager();
        $this->cur_page($_cur_page);
        $this->link();
    }
   
    public  function _pager()//计算总页数
    {
    return $this->pages = ceil($this->_total/$this->pagesize);
    }
   
   
    public function cur_page($_cur_page) //设置页数
    {     
               if (isset($_cur_page))
           {
           $this->_cur_page=intval($_cur_page);
           }
           else
           {
            $this->_cur_page=1; //设置为第一页
           }
        return  $this->_cur_page;
   }
   
//数据库记录偏移量
   public function _offset()
   {
   return $this->offset=$this->pagesize*($this->_cur_page-1);
   }
   
  //html连接的标签
  public function link()
  {
    if ($this->_cur_page == 1 && $this->pages>1)
        {
            //第一页
            $this->pager_Links = "首 页 | 上一页 | _cur_page+1).">下一页 | pages>尾 页";
        }
        elseif($this->_cur_page == $this->pages && $this->pages>1)
        {
            //最后一页
             $this->pager_Links = "首 页 | _cur_page-1).">上一页 | 下一页 | 尾 页";
        }
        elseif ($this->_cur_page > 1 && $this->_cur_page pages)
        {
            //中间
             $this->pager_Links = "首 页 | _cur_page-1).">上一页 | _cur_page+1).">下一页 | pages>尾 页";
        }
        return $this->pager_Links;
  }
  
  //html数字连接的标签
   public function num_link()
  {
       $setpage  = $this->_cur_page ? ceil($this->_cur_page/$this->pernum) : 1;
        $pagenum   = ($this->pages > $this->pernum) ? $this->pernum : $this->pages;
        if ($this->_total  pagesize) {
            $text  = '只有一页';
        } else {
            $text = '页数:'.$this->pages.' '.$this->pagesize.'个/页 ';
            if ($this->_cur_page > 1) {
                $text .= '[1]..';
            }
            if ($setpage > 1) {
                $lastsetid = ($setpage-1)*$this->pernum;
                $text .= '[';
            }
            if ($this->_cur_page > 1) {
                $pre = $this->_cur_page-1;
                $text .= '
[';
            }
            $i = ($setpage-1)*$this->pernum;
            for($j=$i; $jpages; $j++) {
                $newpage = $j+1;
                if ($this->_cur_page == $j+1) {
                    $text .= '['.($j+1).']';
                } else {
                    $text .= '
['.($j+1).']';
                }
            }            
            if ($this->_cur_page pages){
                $next = $this->_cur_page+1;
                $text .= '[>]';
            }
            if ($setpage _total) {
                $nextpre = $setpage*($this->pernum+1);
                if($nextprepages)
                $text .= '[>>]';
            }
            if ($this->_cur_page pages) {
                $text .= '..pages.'>['.$this->pages.']';
            }
         }
            return $text;
         }
    }
//$conn,$tpl 全局变量 传入 $table是数据表 $where 是条件语句 $order 是ADSC之类的,$pager_size是每页显示数,$pager是当前页
//返回后在摸板里面可以直接使用
  
数字标签用
    class my_Pager extends show_Pager
    {
        function __construct($table,$where,$order,$pager_size,$pager)
        {
         global $conn;
         global $tpl;
         $sql="SELECT * FROM `$table` $where order by $order desc";
         $nums=$conn->Execute($sql)->RecordCount();
         $pager=new show_Pager($nums,$pager_size,$pager);
         $show=$conn->SelectLimit($sql,$pager_size,$pager->_offset())->GetAll();
         $tpl->assign("numlink",$pager->num_link());//数字标签
         $tpl->assign("show",$show);//显示帖子
        }
    }
?>



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn