Develop

[php] 초간단 게시판 페이지 분할 알고리즘

by hooni posted Apr 23, 2003
?

Shortcut

PrevPrev Article

NextNext Article

ESCClose

Larger Font Smaller Font Up Down Go comment Print
페이지 넘기기 알고리즘을 알려드리겠습니다. 
다소 어려운 부분이 있을것입니다. 
따로 정의 되어 있어야 하는 변수를 설명 해드리겠습니다. 
------------------------------------------------------ 
$page : 페이지 
$total : 총 게시물수 
$limite : 한페이지당 출력될 게시물수 
$page_num : 한 페이지당 출력될 링크수 
------------------------------------------------------ 

## 한 화면에 표시될 게시물 뽑아오는 알고리즘 
if(!$page) $page=1; // 페이지가 없으면 1로 정한다 
$total_page = intval(($total-1) / $limite)+1; // 총 페이지수를 구해온다 
$first = ($page-1)*$limite; // 뽑아올 게시물 [처음] 
$last = $limite; // 뽑아올 게시물 [끝] 

// 뽑아올 게시물[끝] : 총 게시물 수가 한페이지당 출력될 게시물수보다 적으면 총 게시
물수를 뽑아올 게시물[끝] 으로 정한다 
if($total < $last) $last = $total; 
// 뽑아올 게시물 [처음]~뽑아올 게시물 [끝] 구한값으로 한페이지에 글을 뽑아 온다 
$limit = "limit $first,$last"; 


## 게시물을 출력한다(생략) ##### 


## 페이지 링크 구하는 알고리즘 
// 한 화면에 출력될 페이지 링크가 3개라고 가정 하면 현재 페이지가 4라면 4,5,6 이라
는 링크만 출력되게 한다 
// 4가 나오는식 
$first_page = intval(($page-1)/$page_num+1)*$page_num-($page_num-1); 
// 6을 구하는식 
$last_page = $first_page+($page_num-1); 
if($last_page > $total_page) $last_page = $total_page; 

// [이전] 버튼 링크 
$prev = $first_page-1; 
if($page > $page_num) echo"[이전] "; 


// [4] [5] [6] 
// 페이지 링크 출력 : 4와 6을 구했으니 여기서는 4~6까지를 for문으로 출력 
for($i = $first_page; $i <= $last_page; $i++) 
if($page == $i) echo"[$i] "; // 출력될 번호가 현재 페이지랑 같다면 진하게 
else echo"[$i]"; 

// [다음] 버튼 출력 
$next = $last_page+1; 
if($next <= $total_page) echo"[다음]";