WebDevelop/PHP
간단한 페이징 처리
쥬리엘
2007. 8. 31. 09:05
<?php $posts = 1000; // 전체 게시물 개수 $per_page = 20; // 한 페이지 나타낼 게시물 개수 $cur_page = 15; // 현재 선택한 페이지 번호, $_GET['page'] $pps = 10; // 출력할 페이지 번호 개수 // $pps는 짝수이어야 한다. if ($pps % 2 != 0) $pps++; // 총 페이지 수 $npages = ($posts / $per_page) + (($posts % $per_page != 0) ? 1 : 0); // 총 페이지 수가 1이면 적절하게 처리 if ($npages < 2) return; $page1 = $cur_page - $pps / 2; $page2 = $cur_page + $pps / 2; if ($page1 < 1) { $page2 -= $page1; $page1 = 1; } elseif ($page2 > $npages) { $page1 -= ($page2 - $npages); $page2 = $npages; } if ($page1 < 1) $page1 = 1; if ($page2 > $npages) $page2 = $npages; $pageURL = array(); // 처음 페이지 출력 if ($page1 > 1) { echo "처음 "; } // 이전 페이지 출력 if ($cur_page > 1) { printf("이전 ", $cur_page - 1); } for ($i = $page1; $i <= $page2; $i++) { $pageURL[] = ($i == $cur_page) ? $i : "[$i]"; } echo implode(' ', $pageURL); // 다음 페이지 출력 if ($cur_page < $npages) { printf("다음", $cur_page + 1); } // 마지막 페이지 출력 if ($page2 < $npages) { printf("마지막", $npages); } ?>