分页显示类

770阅读 0评论2010-08-27 dongyue91
分类:

原类:

<?PHP
class page
{
    private $text = array(
        'txt_next_page' => '下页',
        'txt_previous_page' => '上页',
        'txt_start' => '首页',
        'txt_end' => '尾页',
        );
    private $button_num;
    
    private $mDataNum;
    private $mButtonLink;
    
    public function __construct()
    {
        $this -> setButton(20);
        $this -> setDataNum(30);
    }
    
    public function getDataBegin()
    {
        return intval($_GET['page']) * $this -> mDataNum;
    }
    
    /**
     * 页码范围 : 正整数
     * @param : int $sum
     * @return : string $fy (like: 1 2 3 4 5)
     */

    public function getPageButton($sum)//总记录数,每页显示条数,页面地址,URL参数页码

    {
        $page = & intval($_GET["page"]);
        $paginal = & $this -> mDataNum;
        $linkpage = & $this -> mButtonLink;
        
        if($paginal!=0)
        { //如果每页只显示0条就只显示首页

            $ys = ceil($sum/$paginal); //计算总页数

            $fy = $page!=0 ? ' .$linkpage.'&page=0" >'.$this -> text['txt_start'].' '
: $this -> text['txt_start'];
            $start = $page<=$this->button_num ? 1 : $page+1-$this->button_num; //循环开始点

            $end = $ys<=($page+$this->button_num) ? $page+($ys-$page) : ($page+$this->button_num); //循环结束点

            for($i=$start;$i<=$end;$i++)
            {
                $fy .= $$i-1) ? ' .$linkpage.'&page='.($i-1).'" >'.$i.' ' : ' '.$i.' ';
            }
            $fy .= $$ys-1) ? ' .$linkpage.'&page='.($ys-1).'" >'.$this -> text['txt_end'].' ' : $this -> text['txt_end'];
        }
        else
        {
            $fy = $page!=0 ? ' .$linkpage.'&page=0" >'.$this -> text['txt_start'].' ' : $this -> text['txt_start'];
            $fy .= $$ys-1) ? ' .$linkpage.'&page='.($ys-1).'" >'.$this -> text['txt_end'].' ' : $this -> text['txt_end'];
        }
        return $fy;
    }
    
    /**
     * 页码范围 : 正整数
     * @param : int $rPageButton
     * @return : no return
     */

    public function setButton($rPageButton)
    {
        $this -> button_num = ceil($rPageButton/2);
    }
    
    public function setButtonLink($rButtonLink)
    {
        $this -> mButtonLink = $rButtonLink;
    }
    
    /**
     * 设置每页数据数量 : 正整数
     * @param : int $rDataNum
     */

    public function setDataNum($rDataNum)
    {
        $this -> mDataNum = $rDataNum;
    }
    
    /**
     * 获取每页数据数量 : 正整数
     * @return : int mDataNum
     */

    public function getDataNum()
    {
        return $this -> mDataNum;
    }
    
}
?>



使用方法:

$this -> mPageHD = MG::__new('page');

$this -> mPageHD -> setButtonLink($this -> mSiteUrl."index&eve=mail_extend&sysp=listor");

//获取数据
//$this -> mPageHD -> getDataBegin().','.$this -> mPageHD -> getDataNum()相当于LIMIT 0,20 中的 0,20
$data = MGTools::getDataList($syspage, $this -> mPageHD -> getDataBegin().','.$this -> mPageHD -> getDataNum(), '');

$fy = $this -> mPageHD -> getPageButton(MGTools::getDataCount($syspage, ''));//数据总数


上一篇:mysql limit查询优化
下一篇:apache的工作方式及优化