一个简单好用的php分页类

在列表翻页实现中常会用到分页设计,这是一个简单易用的php的分页类,摘录参考。(来自《PHP典型模块与项目实战大全》第17章)

 

<?
/**************************************/
/*      @ Pager                       */
/*      @                             */
/*      @ Designer AnVy               */
/**************************************/
class listPage
{
    //public
    var $firstPage;
    var $endPage;
    var $lastPage;
    var $nextPage;
    var $thisPage;
    var $pageSize;
    var $rowNum;
    var $listNum;
    var $cssClass;
    var $splitStr;
    
    var $pageLast;
    var $pageNext;
    var $pageFirst;
    var $pageEnd;
    var $pageList;
    var $pageSelect;
    var $pageAll;
    
    var $links;
    
    function __construct($rowNum,$pageSize = '10',$listNum = '8')
    {
        $this->rowNum = $rowNum;
        $this->pageSize = $pageSize;
        $this->listNum = $listNum;
        $this->splitStr = '&nbsp;';
        $this->lastPage = '上一页';
        $this->nextPage = '下一页';
        $this->firstPage = '首页';
        $this->endPage = '末页';
        $this->thisPage = $_GET['page'] ? $_GET['page'] : 1;
    }
    
    function getStrWhere()
    {
        $temp = array();
        foreach ($_GET as $key=>$val)
            if($key != 'page') $temp[] = urlencode($key) . '=' . urlencode($val);
        foreach ($_POST as $key=>$val)
            $temp[] = urlencode($key) . '=' . urlencode($val);
        $str = @ join('&',$temp);
        unset($temp);
        return $str;
    }
    
    function getPageNum()
    {
        if ($this->thisPage < 1)
            $this->thisPage = 1;
        if ($this->rowNum < 1)
            return 1;
        return ceil($this->rowNum/$this->pageSize);
    }
    
    function createSelect($s,$e)
    {
        $temp = array();
        $temp[] = '<select class="'.$this->cssClass.'" onchange="window.location=this.options[this.selectedIndex].value">';
        for($i = $s ; $i <= $e;$i ++)
            $temp[] = '<option value="?page='.$i.'&'.$this->getStrWhere().'" '.(($i == $this->thisPage)?'selected':'').'>'.$i;
        $temp[] = '<select>';
        return join(chr(13),$temp);     
    }
    
    function createPage()
    {
        $strWhere = $this->getStrWhere();
        $lastPage = $this->lastPage;
        $firstPage = $this->firstPage;
        $endPage = $this->endPage;
        $nextPage = $this->nextPage;
        $thisPage = $this->thisPage;
        $pageNum = $this->getPageNum();
        $listNum = $this->listNum;

        $startNum = $thisPage - (ceil($listNum/2)-1);
        if ($startNum < 1 ) $startNum = 1;
        $endNum = $startNum + $listNum - 1;
        if ($endNum > $pageNum) $endNum = $pageNum;
        
    
        $this->links['first'] ='?'.$strWhere.'&page=1';
        $this->links['last'] ='?'.$strWhere.'&page='.(($thisPage-1<1)?1:($thisPage-1));
        $this->links['next'] ='?'.$strWhere.'&page='.(($thisPage+1>$pageNum)?$pageNum:($thisPage+1));
        $this->links['end'] ='?'.$strWhere.'&page='.$pageNum;
        $this->pageFirst = '<a href="'.$this->links['first'].'" class="'.$this->cssClass.'">'.$firstPage.'</a>'.$this->splitStr;
        $this->pageLast = '<a href="'.$this->links['last'].'" class="'.$this->cssClass.'">'.$lastPage.'</a>';
        $this->pageNext = '<a href="'.$this->links['next'].'" class="'.$this->cssClass.'">'.$nextPage.'</a>';
        $this->pageEnd = $this->splitStr.'<a href="'.$this->links['end'].'" class="'.$this->cssClass.'">'.$endPage.'</a>';
        
        $pageList;
        
        for($i = $startNum ; $i <= $endNum ; $i ++)
            if ($thisPage != $i)
                $pageList[] = '<a href="?'.$strWhere.'&page='.$i.'" class="'.$this->cssClass.'">'.$i.'</a>';
            else
                $pageList[] = '<a class="'.$this->cssClass.'"><b>'.$i.'</b></a>';
        $this->pageList = @ join($this->splitStr,$pageList);
        $this->pageSelect = $this->createSelect($startNum,$endNum);
        $this->pageAll = $this->pageFirst.$this->splitStr.$this->pageLast.$this->splitStr.$this->pageList.$this->splitStr.$this->pageNext.$this->splitStr.$this->pageEnd.$this->splitStr.$this->pageSelect;            
    }
}
?>

用法示例:

$obj = new listPage(22222222);
$obj->createPage();
echo $obj->pageAll;

 

点赞 (0)
  1. 我又来了,真的喜欢上楼主的文章了,很吸引人,比一般的文章感觉更真实,读起来很贴近生活,楼主继续努力,你拥有我们这些忠实的粉丝!加油!

  2. 木本无心说道:

    哈,php什么的,不懂。。。
    [reply=任侠,2012-09-20 05:02 PM]语言已其实都差不多
    最近实习在搞这个[/reply]

  3. 猫她妈说道:

    大哥为什么不配个图呢?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code