원래 데이터베이스와 분리된 페이징 클래스를 게시했는데, 최근에 사용해보니 가끔 검색 항목이 너무 클 때 매개변수를 전달하기 위해 URL을 사용하면 특정 효과나 알려진 버그가 발생할 수 있다는 사실을 발견했습니다. 확장되어 이전 모드와 호환됩니다. 매개변수 하나만 더 설정하면 됩니다.
코드를 복사하세요. 🎜> 코드는 다음과 같습니다.
/**
* 기능: 제공되는 데이터의 총량과 페이지 크기에 따른 페이지네이션 클래스
* 생성일: 2007년 4월 20일 금요일 16:45:21 CST
* 최종 업데이트:
* 작성자: 산시 < ;sanshi0815@tom.com>*/
클래스 페이지 매기기
{
var $result = array()
var $pVar = "myp ";//페이지 매개변수 페이징 횟수
var $urlParamStr = ""; //페이지의 모든 매개변수
var $sqlMoveNumber = 0; //데이터 오프셋
var $is_post = false;
공개 함수 페이지 매김()
{
}
공개 함수 세트($sum,$pageSize,$page="",$is_post = false)
{
$this- >is_post = $is_post;
$this->pVar = 정의됨('PAGE_BAR') ? PAGE_BAR : 'myp'
$url = $_SERVER['PHP_SELF'].'?'.$_SERVER ['QUERY_STRING '];
//전체 페이지 수 계산
$curPage = $this->getCurPage()
$temp['sumPage'] = ceil($sum/$pageSize)
= $curPage;
$temp['sumPage'] > $curPage ?
$temp[' upPage' ] = $curPage >1 ? $curPage-1 :1
$temp['endPage'] = $temp['sumPage']
$this->urlParamStr = ;_makeUrl($url);
$temp['urlPageStr'] = ($page=="") ? $this->_makeUrl($url) : $page.$this->urlParamStr; > $ this->sqlMoveNumber = $curPage <2 ? 0 : ($curPage-1)*$pageSize
$temp['sqlMoveNumber'] = $this->sqlMoveNumber; 'rowNo'] = $sum; $this->result = $temp; 🎜> 공개 함수 getSqlMove()
{
return $this->sqlMoveNumber
공개 함수 getFooter()
{
$str= "전체 ;FONT COLOR =#FF0033>{$this->result['rowNo']} 기사result[ 'upPage']}'";
if($this->is_post) $str .=" ";
$ str .=" >이전 페이지 ";
$str .=" 현재 {$this->result['curPage']} 페이지"
$str .=" 총 개수가 있습니다. {$this->result['sumPage']} 페이지";
$str .=" result ['nextPage']}'";
if($this-> is_post) $str .=" "; > {
if($this->is_post)
{ ;/option> n": "<옵션 값='$i'>$in";
}
$str.=" 页";
//출판 형식 설명
if($this->is_post)
{
$str .="";
$str .="<양식 이름='sanshi_goPage' 방법=포스트>";
$str .="";
$_POST = isset($_POST) ? $_POST : 배열();
foreach($_POST AS $k=>$v)
{
$str .="";
}
$str .="";
}
return $str;
}
공개 함수 getCurPage()
{
return isset($_GET[$this->pVar]) ? intval($_GET[$this->pVar]) : 1 ;
}
//분할하는 URL이 参数返回?后的参数,页码为空 包括问号
비공개 함수 _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 ((배열)$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);
계속하세요.
}
$r[]=$k."=".urlencode($v);
}
return implode("&",$r);
}
/*
//print_r($_SERVER);
$p = 새 페이지 매기기();
$p->set(10,2,'thi.php');
echo $p->getFooter();
echo $p->getJumpPage();
*/
?>