PHP 28강. 페이지네이션(Pagination)
1. 페이지네이션이란?
페이지네이션(Pagination)은 많은 데이터를 여러 페이지로 나누어 출력하는 기능입니다.
예를 들어
공지사항
1 2 3 4 5
처럼 페이지 번호를 클릭하여 이동하는 기능입니다.
2. 왜 사용할까?
게시글이
10,000개
있다면
한 번에 모두 출력하지 않습니다.
보통
10개
20개
30개
씩 나누어 조회합니다.
3. LIMIT
MySQL
SELECT *
FROM board
LIMIT 10;
처음 10개만 조회합니다.
4. LIMIT OFFSET
SELECT *
FROM board
LIMIT 10 OFFSET 20;
20번째 이후
10개를 조회합니다.
5. 현재 페이지
$page =
$_GET["page"] ?? 1;
주소
board.php?page=2
6. 페이지당 개수
$limit = 10;
한 페이지에
10개씩 출력합니다.
7. OFFSET 계산
$offset =
($page-1)
*
$limit;
예)
2페이지
↓
10
3페이지
↓
20
8. SQL
$sql="
SELECT *
FROM board
ORDER BY id DESC
LIMIT
$limit
OFFSET
$offset
";
9. 전체 개수
SELECT
COUNT(*)
FROM board;
10. 전체 페이지
$totalPage =
ceil(
$totalCount
/
$limit
);
예)
95개
↓
10개씩
↓
10페이지
11. 페이지 출력
for(
$i=1;
$i<=$totalPage;
$i++
){
echo
"<a href='?page=$i'>$i</a>";
}
12. 현재 페이지 강조
if(
$i==$page
){
echo
"<strong>$i</strong>";
}
13. 동부산CC 예제
공지사항
1
2
3
4
5
다음
14. 예약목록
관리자
↓
예약
↓
10개
↓
다음 페이지
15. React
axios.get(
"/api/board.php?page=2"
);
16. JSON
{
"list":[
...
],
"totalPage":10,
"page":2
}
React는 목록과 페이지 정보를 함께 받습니다.
17. 동부산CC 활용
✔ 공지사항
✔ 게시판
✔ 회원목록
✔ 예약목록
✔ 관리자
18. 실습 과제
다음을 구현해 보세요.
한 페이지 10개 출력
페이지 번호 출력
현재 페이지 표시
이전 / 다음 버튼
19. 실무 팁
✔ LIMIT 사용
✔ COUNT(*) 사용
✔ OFFSET 계산
✔ 최신순 정렬
✔ 현재 페이지 표시
20. 정리
페이지네이션은 많은 데이터를 여러 페이지로 나누어 출력하는 기능입니다.
MySQL에서는 LIMIT와 OFFSET을 사용하여 필요한 데이터만 조회하며, COUNT(*)로 전체 데이터 수를 구해 총 페이지 수를 계산합니다.
동부산CC 프로젝트에서는 공지사항, 예약 목록, 회원 관리, 자유게시판 등 모든 목록 화면에 페이지네이션을 적용하여 성능과 사용자 경험을 개선할 수 있습니다.
1. 페이지네이션이란?
페이지네이션(Pagination)은 많은 데이터를 여러 페이지로 나누어 출력하는 기능입니다.
예를 들어
공지사항
1 2 3 4 5
처럼 페이지 번호를 클릭하여 이동하는 기능입니다.
2. 왜 사용할까?
게시글이
10,000개
있다면
한 번에 모두 출력하지 않습니다.
보통
10개
20개
30개
씩 나누어 조회합니다.
3. LIMIT
MySQL
SELECT *
FROM board
LIMIT 10;
처음 10개만 조회합니다.
4. LIMIT OFFSET
SELECT *
FROM board
LIMIT 10 OFFSET 20;
20번째 이후
10개를 조회합니다.
5. 현재 페이지
$page =
$_GET["page"] ?? 1;
주소
board.php?page=2
6. 페이지당 개수
$limit = 10;
한 페이지에
10개씩 출력합니다.
7. OFFSET 계산
$offset =
($page-1)
*
$limit;
예)
2페이지
↓
10
3페이지
↓
20
8. SQL
$sql="
SELECT *
FROM board
ORDER BY id DESC
LIMIT
$limit
OFFSET
$offset
";
9. 전체 개수
SELECT
COUNT(*)
FROM board;
10. 전체 페이지
$totalPage =
ceil(
$totalCount
/
$limit
);
예)
95개
↓
10개씩
↓
10페이지
11. 페이지 출력
for(
$i=1;
$i<=$totalPage;
$i++
){
echo
"<a href='?page=$i'>$i</a>";
}
12. 현재 페이지 강조
if(
$i==$page
){
echo
"<strong>$i</strong>";
}
13. 동부산CC 예제
공지사항
1
2
3
4
5
다음
14. 예약목록
관리자
↓
예약
↓
10개
↓
다음 페이지
15. React
axios.get(
"/api/board.php?page=2"
);
16. JSON
{
"list":[
...
],
"totalPage":10,
"page":2
}
React는 목록과 페이지 정보를 함께 받습니다.
17. 동부산CC 활용
✔ 공지사항
✔ 게시판
✔ 회원목록
✔ 예약목록
✔ 관리자
18. 실습 과제
다음을 구현해 보세요.
한 페이지 10개 출력
페이지 번호 출력
현재 페이지 표시
이전 / 다음 버튼
19. 실무 팁
✔ LIMIT 사용
✔ COUNT(*) 사용
✔ OFFSET 계산
✔ 최신순 정렬
✔ 현재 페이지 표시
20. 정리
페이지네이션은 많은 데이터를 여러 페이지로 나누어 출력하는 기능입니다.
MySQL에서는 LIMIT와 OFFSET을 사용하여 필요한 데이터만 조회하며, COUNT(*)로 전체 데이터 수를 구해 총 페이지 수를 계산합니다.
동부산CC 프로젝트에서는 공지사항, 예약 목록, 회원 관리, 자유게시판 등 모든 목록 화면에 페이지네이션을 적용하여 성능과 사용자 경험을 개선할 수 있습니다.
#PHP 28강. 페이지네이션(Pagination)