한번 생각하면 그만이지만, 할때마다 까먹기 때문에 간단하게 정리를 할 생각이다.
간단하게 페이지네이션은 일반적인 게시판에서 볼 수 있는 하단에 있는 네비게이터를 의미한다
현재 페이지와, 다음/이전 페이지, 다음/이전 탭을 오고가면서 게시글을 볼 수 있다.
거두절미하고 페이지네이션을 구현하기 위해선 3가지만 정하면 된다.
- 총 글의 개수 (total_post)
- 한 페이지당 보여줄 글의 개수 (number_per_page)
- 하나의 탭당 보여줄 페이지의 개수 (nuber_per_tab)
용어정리를 하나면 총 글의 개수는, 데이터베이스에 있는 모든 글의 개수이며
한 페이지당 보여줄 글의 개수는, 1번페이지에 접속했다면 총 몇개의 글을 보여줄것인지(보통 10, 20개 등 다양하다)
하나의 탭당 보여줄 페이지의 개수는, 위의 사진처럼 탭(내 마음대로 용어를 정했다)당 몇개의 페이지를 보여줄지이다
위 3개를 정했다면 나머지는 간단하다. 페이지가 될 개수를 구한다
총 페이지 개수(total_page) = ceil(total_post / number_per_page)
만약 글이 125개이며, 한페이지당 10개씩 보여준다면 125 / 10 = 12.5 에서 올림처리하면 13개가 된다.
나머지 5개의 글은 13페이지에서 처리될것이다.
다음으로 탭을 구현하기 위해 현재 접속해있는 페이지번호에서의 범위를 구한다.
현재 탭의 범위(max_of_tab) = ceil(현재 페이지번호 / number_per_page) * numer_per_page
현재 페이지가 1이라면, 올림(1 / 10) * 10 = 10이 된다. 범위가 정해졌으므로 1부터 10까지 탭을 구현하면 된다.
쿼리에서 게시글을 가져오는건 기본키 기준으로 역순정렬을 한 뒤(가장 최근게시글을 앞으로 배치해야 하니까), LIMIT으로 페이지당 가져올 개수만큼 가져오면 된다.
SELECT * FROM 게시글테이블 ORDER BY 기본키 DESC LIMIT 현재 페이지번호 * number_per_page, number_per_page
'토막상식' 카테고리의 다른 글
업캐스팅 시 동적 바인딩 과정 (0) | 2022.10.04 |
---|---|
많은 사람들이 모르는 Putty 포트포워딩 꿀팁 (0) | 2022.09.04 |
[Azure] Webapps 에 도메인넣고 SSL 설정하기 (0) | 2022.09.03 |
답답해서 정리해보는 Google OAuth2 연동방법 (0) | 2022.06.06 |
C++ 접두어 (0) | 2019.08.04 |