Heim  >  Artikel  >  Backend-Entwicklung  >  php 分页类 扩展代码_PHP教程

php 分页类 扩展代码_PHP教程

WBOY
WBOYOriginal
2016-07-21 15:45:591171Durchsuche

原来发表过一个脱离数据库的分页类,最近使用的时候发现有些时候搜索的东西过于大的时候,采用url传递参数的方式,可能会有一定的影响或者叫已知的bug,这次做了一些扩展,同时兼容了以前的模式,使用上面很简单的,只需要多设置一个参数就可以了代码如下:

复制代码 代码如下:

/**
* 功能: 分页类,根据提供的数据总量和页面大小
* 创建日期:Fri Apr 20 16:45:21 CST 2007
* 最后更新:
* 作者: sanshi
*/

class pagination
{
    var $result = array();
    var $pVar = "myp";//page参数分页记数
    var $urlParamStr = ""; //页面的所有参数
    var $sqlMoveNumber = 0; //数据的偏移量
    var $is_post = false;

    public function pagination()
    {

    }
    public function set($sum,$pageSize,$page="",$is_post = false)
    {
        $this->is_post = $is_post;
        $this->pVar = defined('PAGE_BAR') ? PAGE_BAR : 'myp' ;
        $url = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
        //计算出总页数
        $curPage = $this->getCurPage();

        $temp['sumPage'] = ceil($sum/$pageSize);
        //修改了,页码超出的bug
        if($curPage>$temp['sumPage']) $curPage=$temp['sumPage'];
        $temp['curPage'] = $curPage;
        $temp['nextPage'] = $temp['sumPage'] > $curPage ? ($curPage+1) : $temp['sumPage'];
        $temp['upPage'] = $curPage >1 ? $curPage-1 :1;
        $temp['endPage'] = $temp['sumPage'];
        $this->urlParamStr = $this->_makeUrl($url);
        $temp['urlPageStr'] = ($page=="") ? $this->_makeUrl($url) : $page.$this->urlParamStr;

        $this->sqlMoveNumber = $curPage         $temp['sqlMoveNumber'] = $this->sqlMoveNumber;
        $temp['rowNo'] = $sum;
        $this->result = $temp;
        return $this->result;
        //print_r($temp);exit();
    }
    public function getSqlMove()
    {
        return $this->sqlMoveNumber;
    }
    public function getFooter()
    {
        $str= "共有 {$this->result['rowNo']}result['upPage']}'";
        if($this->is_post) $str .=" onclick='return sanshi_page_post(this.href,{$this->result['upPage']});' ";
        $str .=" >上一页
";
        $str .=" 当前 {$this->result['curPage']} 页";
        $str .=" 共有 {$this->result['sumPage']} 页";
        $str .=" result['nextPage']}'";
        if($this->is_post) $str .=" onclick='return sanshi_page_post(this.href,{$this->result['nextPage']});' ";
        $str .=" >下一页
";
        return $str;
    }
    public function getJumpPage()
    {
        if($this->is_post)
        {
            $str = " 跳到第 \n";
        }
for($i=1;$iresult['sumPage'];$i++)
{
$str .= ($i==$this->result['curPage']) ? "\n" : "\n";
}
$str.=" 页";
         //输出form表单
        if($this->is_post)
        {
            $str .="";
            $str .="
";
            $str .="";
            $_POST = isset($_POST) ? $_POST : array();
            foreach($_POST AS $k=>$v)
            {
                $str .="";
            }
            $str .="
";
        }
return $str;
    }
    public function getCurPage()
    {
        return isset($_GET[$this->pVar]) ? intval($_GET[$this->pVar]) : 1 ;
    }
    //分析出url的参数返回?后的参数,页码为空 包括问号
    private function _makeUrl($url)
    {
        $arrayUrl=parse_url($url);
        if(isset($arrayUrl['query']))
        {
            $q=$arrayUrl['query'];
            parse_str($q,$qParam);
            //print_r($qParam);
            if(array_key_exists($this->pVar,$qParam))
            {
                foreach ($qParam AS $k=>$v)
                {
                    if($k !=$this->pVar) $temp[$k] = $v;
                }
                $temp[$this->pVar] = "";
                if(function_exists("http_build_query"))
                    return '?'.http_build_query($temp);
                else
                    return '?'.sanshi_http_build_query($temp);
            }else {
                return "?{$q}&{$this->pVar}=";
            }
        }else{
            return "?{$this->pVar}=";
        }

    }
}
function sanshi_http_build_query($a,$b='',$c=0)
{
    if (!is_array($a)) return false;
    foreach ((array)$a as $k=>$v)
    {
        if ($c)
            $k=$b."[".$k."]";
        elseif (is_int($k))
            $k=$b.$k;
        if (is_array($v)||is_object($v))
        {
            $r[]=http_build_query($v,$k,1);
            continue;
        }
        $r[]=$k."=".urlencode($v);
    }
    return implode("&",$r);
}
/*
//print_r($_SERVER);
$p = new pagination();
$p->set(10,2,'thi.php');
echo $p->getFooter();
echo $p->getJumpPage();
*/
?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/320231.htmlTechArticle原来发表过一个脱离数据库的分页类,最近使用的时候发现有些时候搜索的东西过于大的时候,采用url传递参数的方式,可能会有一定的影...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn