처음으로 클래스기반으로 만들어본 게시판 페이지 네비게이션 입니다.
저는 물론 사용해 보았고 현재 버그 및 오류가 없습니다.
사용시에 버그나 오류 발생 된다면 덧글 달아주세용^^
<?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);
?>
저는 물론 사용해 보았고 현재 버그 및 오류가 없습니다.
사용시에 버그나 오류 발생 된다면 덧글 달아주세용^^
<?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);
?>
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 7030 | 11년 전 | 1403 | ||
| 7029 |
|
11년 전 | 3240 | |
| 7028 |
|
11년 전 | 1135 | |
| 7027 | 11년 전 | 1003 | ||
| 7026 | 11년 전 | 2081 | ||
| 7025 |
어려워요잉
|
11년 전 | 2736 | |
| 7024 | 11년 전 | 2102 | ||
| 7023 | 11년 전 | 3131 | ||
| 7022 |
Shhhh
|
11년 전 | 1526 | |
| 7021 |
|
11년 전 | 3269 | |
| 7020 | 11년 전 | 785 | ||
| 7019 |
막돼먹은영애
|
11년 전 | 1081 | |
| 7018 | 11년 전 | 1953 | ||
| 7017 | 11년 전 | 2311 | ||
| 7016 | 11년 전 | 1021 | ||
| 7015 | 11년 전 | 2825 | ||
| 7014 | 11년 전 | 3029 | ||
| 7013 | 11년 전 | 1518 | ||
| 7012 |
|
11년 전 | 2192 | |
| 7011 | 11년 전 | 1049 | ||
| 7010 | 11년 전 | 1402 | ||
| 7009 |
|
11년 전 | 1071 | |
| 7008 | 11년 전 | 2262 | ||
| 7007 | 11년 전 | 2180 | ||
| 7006 |
|
11년 전 | 1167 | |
| 7005 | 11년 전 | 5305 | ||
| 7004 | 11년 전 | 2353 | ||
| 7003 | 11년 전 | 3063 | ||
| 7002 | 11년 전 | 1914 | ||
| 7001 | 11년 전 | 950 | ||
| 7000 | 11년 전 | 2034 | ||
| 6999 |
|
11년 전 | 2157 | |
| 6998 | 11년 전 | 1876 | ||
| 6997 |
네이비칼라
|
11년 전 | 1490 | |
| 6996 | 11년 전 | 951 | ||
| 6995 |
|
11년 전 | 1848 | |
| 6994 | 11년 전 | 2573 | ||
| 6993 |
kimsdesign
|
11년 전 | 1296 | |
| 6992 |
|
11년 전 | 2773 | |
| 6991 | 11년 전 | 1717 | ||
| 6990 | 11년 전 | 4470 | ||
| 6989 | 11년 전 | 1848 | ||
| 6988 |
네이비컬러
|
11년 전 | 2506 | |
| 6987 | 11년 전 | 3721 | ||
| 6986 |
잘살아보자
|
11년 전 | 1591 | |
| 6985 |
잘살아보자
|
11년 전 | 2466 | |
| 6984 | 11년 전 | 817 | ||
| 6983 |
천재조상훈
|
11년 전 | 1849 | |
| 6982 |
천재조상훈
|
11년 전 | 4481 | |
| 6981 |
천재조상훈
|
11년 전 | 1608 | |
| 6980 |
|
11년 전 | 1864 | |
| 6979 |
|
11년 전 | 745 | |
| 6978 |
잘살아보자
|
11년 전 | 1137 | |
| 6977 |
잘살아보자
|
11년 전 | 1465 | |
| 6976 |
잘살아보자
|
11년 전 | 1569 | |
| 6975 |
천재조상훈
|
11년 전 | 1475 | |
| 6974 |
잘살아보자
|
11년 전 | 2230 | |
| 6973 |
잘살아보자
|
11년 전 | 1153 | |
| 6972 |
잘살아보자
|
11년 전 | 3068 | |
| 6971 |
잘살아보자
|
11년 전 | 3273 | |
| 6970 |
잘살아보자
|
11년 전 | 1836 | |
| 6969 |
잘살아보자
|
11년 전 | 4758 | |
| 6968 | 11년 전 | 9892 | ||
| 6967 |
|
11년 전 | 2628 | |
| 6966 |
|
11년 전 | 1110 | |
| 6965 | 11년 전 | 3255 | ||
| 6964 | 11년 전 | 2577 | ||
| 6963 | 11년 전 | 2100 | ||
| 6962 |
star3840
|
11년 전 | 1014 | |
| 6961 | 11년 전 | 4240 | ||
| 6960 |
|
11년 전 | 710 | |
| 6959 | 11년 전 | 1233 | ||
| 6958 |
|
11년 전 | 1665 | |
| 6957 | 11년 전 | 1888 | ||
| 6956 |
잘살아보자
|
11년 전 | 1849 | |
| 6955 | 11년 전 | 4624 | ||
| 6954 | 11년 전 | 1625 | ||
| 6953 |
잘살아보자
|
11년 전 | 858 | |
| 6952 |
잘살아보자
|
11년 전 | 2040 | |
| 6951 | 11년 전 | 1606 | ||
| 6950 | 11년 전 | 2609 | ||
| 6949 |
잘살아보자
|
11년 전 | 882 | |
| 6948 | 11년 전 | 1552 | ||
| 6947 | 11년 전 | 1464 | ||
| 6946 | 11년 전 | 1601 | ||
| 6945 | 11년 전 | 1227 | ||
| 6944 | 11년 전 | 1184 | ||
| 6943 | 11년 전 | 1229 | ||
| 6942 | 11년 전 | 1569 | ||
| 6941 | 11년 전 | 1654 | ||
| 6940 | 11년 전 | 1751 | ||
| 6939 | 11년 전 | 1661 | ||
| 6938 | 11년 전 | 1938 | ||
| 6937 | 11년 전 | 1148 | ||
| 6936 | 11년 전 | 1345 | ||
| 6935 | 11년 전 | 1298 | ||
| 6934 | 11년 전 | 1464 | ||
| 6933 | 11년 전 | 1972 | ||
| 6932 | 11년 전 | 1529 | ||
| 6931 | 11년 전 | 1534 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기