컴

게시판 페이지 관련 글입니다.

· 2013-11-18 (월) 13:11:40 · 4308
처음으로 클래스기반으로 만들어본 게시판 페이지 네비게이션 입니다.
저는 물론 사용해 보았고 현재 버그 및 오류가 없습니다.
사용시에 버그나 오류 발생 된다면 덧글 달아주세용^^
<?php
/**
* Class Name : paging
* Description : 게시판의 페이지 네비게이션을 리턴 합니다.
* Modification Information
*
* @수정일: 2012-05-18
* @작성/수정자: 이강민
* @수정내용: 최초 작성
*
* @author 이강민
* @since 2012-05-18
* @version 1.0
*/

class paging
{
///////////////////// 사용자 정의 변수 선언부 //////////////////////

public $recordPerPage; //페이지당 보여질 레코드 수
public $pagePerBlock; //블럭당 보여질 페이지 링크 수
public $prevBlockBtn; //이전 블럭 이동 이미지 경로
public $nextBlockBtn; //다음 블럭 이동 이미지 경로

///////////////////// 시스템 변수 선언부 //////////////////////////

protected $totalRecord; //전체 레코드 수를 담을 변수
protected $totalNumOfPage; // 전체 페이지 수
protected $totalNumOfBlock; //전체 블럭 수
protected $currentBlock; //현재 블럭 위치 값 담을 변수
protected $searchString = ""; //검색 쿼리
protected $pointer; //레코드 포인터 위치 값 담을 변수
protected $number; //게시물 인덱스 번호 담을 변수

protected $startPage=0; //시작 페이지 번호 담을 변수
protected $endPage=0; //끝 페이지 번호 담을 변수
protected $isPrev=false; //이전 페이지 이동, 초기값 셋팅
protected $isNext=false; //다음 페이지 이동, 초기값 셋팅
protected $goPrevPage=0;
protected $goNextPage=0;

protected $thePage = NULL;

/**
* 게시판 레코드를 가져올 레코드의 위치를 리턴

* @param page - 페이지 값

* @return $this->pointer - 레코드 위치 리턴 함수
*/
public function getPointer($page) {
return $this->pointer = ($page-1) * $this->recordPerPage;
}

/**
* 페이지 번호 생성 함수

* @param
$totalNumOfPage - 전체 페이지 수
$currentBlock - 현재 블럭 위치값
$pagePerBlock - 블럭당 보여질 링크 수
$page - 페이지 값
$searchString - 검색 쿼리스트링

* @return $this->thePage - 페이지 네비게이션 넘버
*/
protected function getPageNumber($totalNumOfPage, $currentBlock, $pagePerBlock, $page, $searchString) {

$this->startPage = ($currentBlock - 1) * $pagePerBlock + 1; //시작페이지
$this->endPage = min($totalNumOfPage, $currentBlock * $pagePerBlock); // 마지막 페이지

if($currentBlock == 1) {
$this->isNext = false;
$this->isPrev = false;
}

if($this->endPage < $totalNumOfPage) { $this->isNext= true;} //다음 블럭 허용

if($currentBlock > 1) { $this->isPrev = true; } //이전 블럭 허용


// 이전 블럭 이동 체크
if($this->isPrev)
{
$this->goPrevPage = $this->startPage - $this->pagePerBlock();
$this->thePage  = "<a href=\"".$this->_PHP_SELF."?page=".$this->goPrevPage."&".$searchString."\">
<img src=\"/images/bbs/left_btn.gif\" border=\"0\" title=\"이전 10 페이지\" /></a> ";
}
else
{
$this->thePage  = "<img src=\"/images/bbs/left_btn.gif\" border=\"0\" title=\"이전 10 페이지\" /> ";
}


for($p=$this->startPage;$p<=$this->endPage;$p++) {
if($p!=$page)
{
$this->thePage .= " <a href=\"$_PHP_SELF?page=$p&$searchString\">$p</a> ";
}
else
{
$this->thePage .= " <b>$p</b> ";
}
}



// 다음 블럭 이동 체크
if($this->isNext)
{
$this->goNextPage = $this->startPage + $pagePerBlock;
$this->thePage .= "<a href=\"".$this->_PHP_SELF."?page=".$this->goNextPage."&".$searchString."\">
<img src=\"/images/bbs/right_btn.gif\" title=\"다음 10 페이지\" /></a>";
}
else
{
$this->thePage .=  " <img src=\"/images/bbs/right_btn.gif\" title=\"다음 10 페이지\" />";
}

return $this->thePage;

}

/**
* 페이지 번호 생성을 위한 계산식

* @param
$total - 전체 페이지 수
$page - 파라미터로 넘어온 페이지 값
$searchString - 검색 쿼리스트링

* @return $this->getPageNumber 함수를 리턴 합니다.
*/
public function BoundSet($total, $page, $searchString='')
{
$this->totalRecord = $total; //전체 페이지 수

//전체 페이지 수, 전체 블럭 수 얻는다.
$this->totalNumOfPage = ceil($this->totalRecord / $this->recordPerPage);
$this->totalNumOfBlock = ceil($this->totalNumOfPage / $this->pagePerBlock);

//현재 블럭 위치 값 확인
$this->currentBlock = ceil($page / $this->pagePerBlock);

$this->pointer = $this->getPointer($page); //레코드 포인터 위치 값 가져오기.
$this->number = $this->totalRecord - $this->pointer; //인덱스 번호

## 페이지 네비게이션 로드
## Parameter Comment: 전체 페이지 수, 현재 블럭 위치값, 블럭당 보여질 링크 수, 페이지 값, 검색 쿼리스트링
return  $this->getPageNumber($this->totalNumOfPage, $this->currentBlock, $this->pagePerBlock, $page, $searchString);


}
}

//사용방법
$page = $_REQUEST['page'];

if(!$page) { $page = 1; } //페이지를 확인합니다.

$paging = new paging; //클래스 생성
$paging->recordPerPage = 10; //페이지당 보여질 레코드 수 지정
$paging->pagePerBlock = 10; //한 블럭당 보여질 링크 수 지정
$paging->getPointer($page); //본문 레코드를 가져올 레코드 포인터를 리턴

/*
본문 list 가져올 시 sql 작성법
select * from bbs limit $paging->getPointer($page), 페이지당 보여질 레코드 수
*/

/**
* 게시판 페이지 네비게이션을 가져옵니다.
* @param
$total - 검색되어진 전체 레코드 수
$page - 파라미터로 넘어온 page 값
$search - 검색 쿼리스트링
*/
$total = 199;
echo $paging->BoundSet($total, $page, $search);
?>

첨부파일

게시판페이징.txt (5.2 KB) 7회 2013-11-18 13:11
|
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
15-12-13 조회 2,502
15-12-13 조회 2,916
15-12-11 조회 2,564
15-12-11 조회 2,527
15-12-11 조회 2,529
15-12-10 조회 2,486
15-12-10 조회 2,552
15-12-10 조회 2,524
15-12-03 조회 3,169
15-12-03 조회 2,690
15-11-25 조회 2,763
15-11-09 조회 3,011
15-11-04 조회 2,927
15-06-09 조회 4,042
15-05-06 조회 5,054
15-03-28 조회 4,504
14-12-05 조회 4,962
14-10-25 조회 4,977
14-10-13 조회 4,236
14-10-03 조회 6,097
14-09-19 조회 4,919
14-09-18 조회 4,004
14-09-13 조회 4,574
14-09-03 조회 5,550
14-08-26 조회 4,165
14-08-26 조회 3,949
14-08-26 조회 3,941
14-08-11 조회 6,363
14-08-06 조회 4,086
14-08-06 조회 3,681
14-08-06 조회 3,870
14-08-01 조회 6,203
14-08-01 조회 3,792
14-07-30 조회 4,388
14-06-28 조회 5,129
14-06-28 조회 4,408
14-05-11 조회 4,537
14-05-09 조회 4,899
14-05-09 조회 7,658
14-04-30 조회 4,221
14-04-27 조회 4,140
14-04-25 조회 4,865
14-04-21 조회 3,830
14-04-21 조회 4,960
14-04-10 조회 4,559
14-04-01 조회 6,124
14-03-03 조회 3,499
14-02-25 조회 5,885
14-02-14 조회 5,166
14-02-13 조회 4,922
14-01-03 조회 4,402
13-12-06 조회 3,740
13-11-22 조회 5,496
13-11-18 조회 3,996
13-10-02 조회 4,399
13-10-02 조회 3,664
13-10-02 조회 3,922
13-10-02 조회 3,786
13-10-02 조회 4,155
13-09-16 조회 7,999
13-09-16 조회 5,359
13-08-18 조회 5,360
13-07-11 조회 4,012
13-07-10 조회 4,644
13-07-09 조회 4,687
13-07-09 조회 4,943
13-07-04 조회 4,410
13-07-04 조회 4,073
13-07-04 조회 4,193
13-07-01 조회 4,684
13-07-01 조회 4,505
13-07-01 조회 6,727
13-06-23 조회 4,342
13-06-05 조회 3,598
13-05-29 조회 4,830
13-05-10 조회 4,241
13-04-05 조회 4,851
13-04-05 조회 6,539
13-04-05 조회 1.1만
13-04-05 조회 7,139
13-04-05 조회 6,535
13-03-31 조회 5,803
13-03-31 조회 4,123
13-03-28 조회 4,487
13-03-28 조회 6,631
13-03-28 조회 9,168
13-03-28 조회 4,299
13-03-24 조회 3,909
13-03-21 조회 4,584
13-03-21 조회 1.7만
13-03-14 조회 3,893
13-03-10 조회 4,700
13-03-10 조회 4,444
13-03-10 조회 4,153
13-03-08 조회 5,231
13-03-08 조회 4,341
13-03-03 조회 4,986
13-03-03 조회 7,431
13-03-03 조회 4,189
13-03-03 조회 1.1만