my php clsss list
2010-06-10 | millken Posted On :


  <pre style="background:none repeat scroll 0 0 #F3F3F3;border:1px solid #CCCCCC;padding:9px;word-wrap:word-break;font-size:12px !important;font-family:monospace !important;margin:0;">

  </pre>
class pages_class {
    public $count;      #结果总数
    public $page;       #当前页
    public $pagesize;   #每页结果数
    public $baseurl;    #url
    public $result;     #结果数组集
    public $max;   #最大记录数
    private $permalink ; #是否固定链接

    #构造函数,初始化变量
    function __construct( $count , $page , $pagesize ,  $baseurl = false, $max = 0 )
    {
        $this->count     = $count;
        $this->page      = max(intval($page),1);
        $this->pagesize  = $pagesize;
        $this->permalink = false;
        $this->baseurl   = $baseurl ? $baseurl : $this->__geturl();
        $this->max = max(0, $max);
        $this->pagecount = ($this->max>0 && ceil($this->count/$this->pagesize)>$this->max)?$this->max:ceil($this->count/$this->pagesize);
    }

    #获得当前url
    function __geturl()
    {
        $permalink = URL_REWREITE_MODE;
        if ( $permalink && 'search' !== $GLOBALS['router']->getController() ) {
            $this->permalink = true;
            $link = preg_replace("~(\/)page/\d+~i", "", $_SERVER['REQUEST_URI']);
        }else{
            $link = preg_replace('/((\?)p=\d+[&])|(&p=\d+|(&))|(\?p=\d+$)/eis','"\\2\\4"',$_SERVER['REQUEST_URI']);
        }
        return $link;
    }

    #获得分页列表
    function get_list()
    {
        $this->result['count'] = $this->count;
        $this->result['page'] = $this->page;
        $this->result['pagesize'] = $this->pagesize;
        $this->result['pagecount'] = $this->pagecount;
        if($this->result['pagecount']<=1) //只有一页以下
        {
            $this->result['pagelist'] = 0;
        }
        else //一页以上
        {
            #前一页,第一页的算法
            $this->result['first'] = ($this->page == 1) ? 0 : 1;
            $this->result['firsturl'] = $this->baseurl . ($this->permalink? '/page/1':'&p=1');
            $this->result['pre'] = ($this->page > 1) ? ($this->page - 1) : 0;
            $this->result['preurl'] = $this->baseurl . ($this->permalink? '/page/':'&p=') . $this->result['pre'];
            #后一页,最后一页的算法
            $this->result['next'] = ($this->page >= $this->pagecount ) ? 0 : $this->page + 1;
            $this->result['nexturl'] = $this->baseurl . ($this->permalink? '/page/':'&p=') . $this->result['next'];
            $this->result['last'] = ($this->page >= $this->pagecount ) ? 0 : $this->pagecount;
            $this->result['lasturl'] = $this->baseurl . ($this->permalink? '/page/':'&p=') . $this->result['last'];



            #起始
            $pagearray = array();
            $start =max( floor(($this->page-1)/10),0)*10+1;
            for($i=0;$i<($this->pagecount<10?$this->pagecount :10) ;$i++)
            {
                if( ($start+$i) <= $this->result['pagecount'])
                {
                    $pagearray[$i]['page'] = $start+$i;
                }
                if( ($start+$i) != $this->page )
                {
                    $pagearray[$i]['url'] = $this->baseurl . ($this->permalink? '/page/':'&p='). ($start+$i);
                }
            }
            #分页导航列表
            $this->result['pagelist'] = $pagearray;
            $this->result['baseurl'] = $this->baseurl;
        }
        return $this->result;
    }
}

引用:0
0 评论:
Post a Comment