(PHP) 페이지 번호 만들기
게시판처럼 출력할 데이터가 많을 때, 게시물을 페이지 단위로 분할해주는 소스입니다.
소스를 참고하여 작동 원리를 먼저 이해하시고, 자신의 사이트에 알맞게 넣어 사용하세요.
적용 결과는 아래와 같이 표시 됩니다. (전체 100 페이지, 페이지 번호를 10 개씩 보여줄 때)
1 2 3 4 5 6 7 8 9 10...100 [다음]
[이전] 1...11 12 13 14 15 16 17 18 19 20...100 [다음]
[이전] 1...91 92 93 94 95 96 97 98 99 100
/** 소스 & 설명 **/
// 한 화면에 출력할 페이지 번호 갯수를 설정합니다. 10개씩 보여줍니다.
$_page[page_num] = 10;
5 개로 설정하면
(이전) 11 12 13 14 15 (다음)
// 한 페이지에 출력될 게시물 수를 설정합니다. 보통 10개에서 20개 정도의 게시물을 보여줍니다.
$_page[list_num] = 50;
// 페이지 번호가 없으면 1 을 기본값으로 설정합니다.
$page = ($page) ? $page : 1;
// 게시물 수($data_num)를 페이지당 출력 수로 나눠 페이지 수를 계산합니다.
$_page[total_page] = ceil($data_num / $_page[list_num]);
// 페이지 시작 번호를 계산합니다. 변수 값은 실제 페이지 시작 번호보다 1이 적습니다.
$_page[start_page] = (int)(($page - 1) / $_page[page_num]) * $_page[page_num];
// 잘못된 페이지 번호를 경고합니다.
if ($page > $_page[total_page]) {
echo "잘못된 페이지 번호입니다.";
}
// 첫번째 페이지 그룹을 넘어 갔을 때, 이전 버튼을 표시합니다.
if ($page > $_page[page_num]) {
echo "<a href=?page=".$_page[start_page].">[이전]</a> ";
echo "<a href=?page=1>1</a>...";
}
$i = 1;
while($i + $_page[start_page] <= $_page[total_page] && $i <= $_page[page_num]) {
$_page[move_page] = $i + $_page[start_page];
if ($page == $_page[move_page]) {
echo $_page[move_page];
} else {
echo " <a href=?page=".$_page[move_page].">".$_page[move_page]."</a> ";
}
$i++;
}
// 마지막 페이지 그룹 전까지 다음 버튼을 표시합니다.
if ($_page[total_page] > $_page[move_page]) {
$_page[next_page] = $_page[move_page] + 1;
echo "...<a href=?page=".$_page[total_page].">".$_page[total_page]."</a>";
echo " <a href=?page=".$_page[next_page].">[다음]</a>";
}
'PC&웹 > 웹프로그래밍' 카테고리의 다른 글
| 나야나 기가 호스팅 서비스 이용 중... (2) | 2007/08/22 |
|---|---|
| (PHP) 민원 접수 처리 프로그램 (0) | 2007/03/02 |
| (PHP) 피라미드 비율 계산 (0) | 2007/02/14 |
| (PHP) 페이지 번호 만들기 (0) | 2007/02/14 |
| (PHP) GD 함수 응용 예제, 그라데이션 그래프 만들기 (0) | 2007/02/13 |
| PHP 코딩 표준 규약 (0) | 2007/02/12 |
Visitors:
PageViews:


댓글을 달아 주세요