나는 개인적으로 PHP로 작성된 간단한 페이징 클래스를 배웠는데, 이는 매우 다재다능합니다.
- /**
- * 간단한 페이징 클래스
- * @author:phpprince
- * @QQ: 8923052
- * @date: 2014-04-22 21:08:35
- */
- 클래스 페이지{
- protected $url //Address
- protected $allnum; //총 레코드 수
- protected $current; //현재 페이지 번호
- protected $pagesize; //각 페이지에 표시되는 레코드 수
- protected $postfix
- protected $ style; // 총 3가지 표시 스타일이 있습니다. 1 2 3은 각각 처음 5개, 그 다음 4개, 처음 3개, 마지막 3개, 처음 4개, 마지막 4개를 의미합니다.
-
- public function __construct($url,$allnum, $current,$pagesize=10, $postfix='',$style=1){
- $this->url=$url;
- $this->allnum=$allnum;
- $ this->current=$current ;
- $this->pagesize=$pagesize;
- $this->postfix=$postfix;
- $this->style=$style;
- }
-
- //전체 페이지 수 가져오기
- protected function maxPageNum(){
- $max=ceil($this->allnum/$this->pagesize);
- //페이지 번호 제한 초과 수정
- if($this->current>$max){
- $this->current=$max;
- }
- if($this- >current<1){
- $this ->current=1;
- }
- return $max;
- }
-
- //첫 번째 페이지의 전체 HTML 가져오기 link str
- 보호된 함수 firstUrl(){
- if($this->current!=1)
- {
- return '홈페이지';
- }else{
- return 'Homepage ';
- }
- }
-
- //이전 페이지 링크의 전체 html 가져오기 str
- 보호된 함수 prevUrl(){
- if( $this->current<=1){
- $fullurl='이전 페이지 a>';
- }else{
- $fullurl=$this->url.($this->current-1).$this->postfix;
- $ fullurl='이전 페이지';
- }
- return $fullurl;
- }
-
- //다음 페이지 링크의 전체 HTML 가져오기 str
- protected function nextUrl(){
- if($this-> current>=$this->maxPageNum() ){
- $fullurl='다음 페이지';
- }else{
- $fullurl= $this->url.($this->current 1).$this->postfix;
- $fullurl='< ;a href="'.$fullurl.'">다음 페이지';
- }
- return $fullurl;
- }
-
- //마지막 페이지 링크의 전체 HTML 가져오기 str
- protected function lastUrl(){
- if($this->current>=$this->maxPageNum()){
- $fullurl='< ;span id="lastpage">마지막 페이지';
- }else{
- $fullurl=$this-> ;url.$this-> ;maxPageNum().$this->postfix;
- $fullurl='';
- }
- return $fullurl;
- }
-
- //지정된 URL의 전체 URL을 가져옵니다. 페이지 번호
- protected function getUrl( $pageno){
- return $this->url.$pageno.$this->postfix;
- }
-
- //표시 스타일 지정
- 보호된 함수 getStyle(){
- 스위치($this->style){
- 사례 1:
- $before=5;
- $after=4;
- break;
- 사례 2:
- $before =3;
- $after=3;
- break;
- 사례 3:
- $before=4;
- $after=4;
- break;
- 기본값 :
- $before=5;
- $after=4;
- }
-
- return array($before,$after);
- }
-
- //중간 URL 가져오기 1 2 3 4 5 ⑥ 7 8 9 10
- protected function getMiddelUrl(){
- $max=$this->maxPageNum() //전체 페이지를 먼저 가져옵니다. 현재 페이지 오버런 문제를 수정하려면
- $current=$this->current; //다음 페이지 번호 범위가 올바른지 확인하려면 현재 페이지 번호가 적법해야 합니다.
- //현재 스타일 가져오기
- list($before,$after)=$this-> getStyle();
- $startno=$current-$before; //시작 페이지 번호
- $endno=$current $after; 끝 페이지 번호
-
- //항상 출력이 요구 사항을 충족하는지 확인하려면 페이지가 제한을 초과하지 않는다는 전제 하에 시작 페이지가 늘어나면 끝 페이지도 늘어나야 하며, 그 반대도 마찬가지입니다.
- while($endno>$max||$startno<1){
- if($endno> $max){ //끝 페이지 수가 제한을 초과했습니다.
- $endno--;
- if ($startno>1){
- $startno--;
- }
- }
- if($startno<1){ //시작 페이지 번호가 범위를 벗어났습니다.
- $startno ;
- if($endno<$max){
- $endno ;
- }
- }
- }
- $str=''; //전체 HTML 문자열을 저장하는 데 사용됩니다
- for($i=$startno;$i<=$endno;$i ){
- $currenturl=$ this->getUrl($i);
- if($i!=$current){
- $str.="{$ i}< /a>";
- }else{
- $str.=''.$i.'< /span>' ;
- }
- }
- return $str;
- }
-
- //전체 페이징 HTML 문자열 반환
- public function getPageStr(){
- $str='
'.$this->firstUrl().$this->prevUrl();
- $str.=$this->getMiddelUrl();
- $ str.=$this->nextUrl().$this->lastUrl().'total'.$this->maxPageNum().'page '.$this ->allnum.'Bar
';
- return $str;
- }
- }
- ?>
코드 복사
|