Home  >  Article  >  Backend Development  >  PHP paging class extension code_PHP tutorial

PHP paging class extension code_PHP tutorial

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

I originally published a paging class that is separated from the database. When I used it recently, I found that sometimes when the search items are too large, using the URL to pass parameters may have certain effects or known bugs. This time I did some It is extended and compatible with the previous mode. It is very simple to use the above. You only need to set one more parameter. The code is as follows:

Copy the code The code is as follows:

/**
* Function: Pagination class, based on the total amount of data provided and page size
* Created date: Fri Apr 20 16:45:21 CST 2007
* Last updated:
* Author: sanshi < ;sanshi0815@tom.com>
*/

class pagination
{
var $result = array();
var $pVar = "myp";//Page parameter paging count
var $urlParamStr = ""; //All parameters of the page
var $sqlMoveNumber = 0; //Data offset
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'];
                                                                                                                                                                                       sumPage'] = ceil($sum/$pageSize);
                                                                                                                                                                    ];
$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 <2 ? 0 : ($curPage-1)*$pageSize;
$temp['sqlMoveNumber'] = $this->sqlMoveNumber;
$temp['rowNo'] = $sum;
$this->result = $temp; /print_r($temp);exit();
}
public function getSqlMove()
{
return $this->sqlMoveNumber;
}
public function getFooter()
{
$str= "Total{$this->result['rowNo']}result['upPage']}'";
   if($this->is_post) $str .=" onclick='return sanshi_page_post(this.href ,{$this->result['upPage']});' ";
$str .=" >Previous Page
";
$str .=" Current{$ this->result['curPage']} page";
$str .=" There are {$this->result['sumPage']} pages";
$str .=" result['nextPage']}'";
   if($this->is_post) $str .=" onclick ='return sanshi_page_post(this.href, {$this->result['nextPage']});' "; return $str;
}
public function getJumpPage()
{
if($this->is_post)
{
$str = " Jump to n";
        }
for($i=1;$i<=$this->result['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传递参数的方式,可能会有一定的影...