https://dpdnjs402.tistory.com/65
💡 관리자 회원정보 페이지에 페이징 처리를 해보자!
/* paging : 한 페이지 당 데이터 개수 */
$list_num = 5;
/* paging : 한 블럭 당 페이지 수 */
$page_num = 3;
/* paging : 현재 페이지 */
$page = isset($_GET["page"])? $_GET["page"] : 1;
/* paging : 전체 페이지 수 = 전체 데이터 / 페이지당 데이터 개수, ceil : 올림값, floor : 내림값, round : 반올림 */
$total_page = ceil($num / $list_num);
// echo "전체 페이지 수 : ".$total_page;
/* paging : 전체 블럭 수 = 전체 페이지 수 / 블럭 당 페이지 수 */
$total_block = ceil($total_page / $page_num);
/* paging : 현재 블럭 번호 = 현재 페이지 번호 / 블럭 당 페이지 수 */
$now_block = ceil($page / $page_num);
/* paging : 블럭 당 시작 페이지 번호 = (해당 글의 블럭번호 - 1) * 블럭당 페이지 수 + 1 */
$s_pageNum = ($now_block - 1) * $page_num + 1;
// 데이터가 0개인 경우
if($s_pageNum <= 0){
$s_pageNum = 1;
};
/* paging : 블럭 당 마지막 페이지 번호 = 현재 블럭 번호 * 블럭 당 페이지 수 */
$e_pageNum = $now_block * $page_num;
// 마지막 번호가 전체 페이지 수를 넘지 않도록
if($e_pageNum > $total_page){
$e_pageNum = $total_page;
};
$total_page = ceil($num / $list_num);
$total_block = ceil($total_page / $page_num);
$now_block = ceil($page / $page_num);
$s_pageNum = ($now_block - 1) * $page_num + 1;
$e_pageNum = $now_block * $page_num;
마지막 페이지 번호>전체페이지
라면, 마지막 페이지 번호는 전체 페이지 번호랑 같다!/* paging : 시작 번호 = (현재 페이지 번호 - 1) * 페이지 당 보여질 데이터 수 */
$start = ($page - 1) * $list_num;
/* paging : 쿼리 작성 - limit 몇번부터, 몇개 */
$sql = "select * from members limit $start, $list_num;";
/* paging : 쿼리 전송 */
$result = mysqli_query($dbcon, $sql);
/* paging : 글번호 */
$cnt = $start + 1;
$start = ($page - 1) * $list_num;
limit
: 몇번부터, 몇개
$sql = "select * from members limit $start, $list_num;";
ex) 1번 페이지는 0번 부터 5개,
2번 페이지는 5번부터 5개,
3번 페이지는 10번부터 5개 ...
$result = mysqli_query($dbcon, $sql);
$cnt = $start + 1;
$start
에 +1를 해준다.while($array = mysqli_fetch_array($result)){
?>
<tr class="brd">
<!-- <td><?php echo $i; ?></td> -->
<td><?php echo $cnt; ?></td>
<td><?php echo $array["u_name"]; ?></td>
<td><?php echo $array["u_id"]; ?></td>
<td><?php echo $array["birth"]; ?></td>
<td><?php echo $array["postalCode"]." ".$array["add1"]." ".$array["add2"]; ?></td>
<td><?php echo $array["email"]; ?></td>
<td><?php echo $array["mobile"]; ?></td>
<td><?php echo $array["reg_date"]; ?></td>
<td><a href="edit.php?u_idx=<?php echo $array["idx"]; ?>">수정</a></td>
<td><a href="#" onclick="del_check(<?php echo $array["idx"]; ?>)">삭제</a></td>
</tr>
<?php
/* $i++; */
/* paging */
$cnt++;
};
?>
mysqli_fetch_array()
를 이용해 필드명으로 값을 출력한다.<p class="pager">
<?php
/* paging : 이전 페이지 */
if($page <= 1){
?>
<a href="list.php?page=1">이전</a>
<?php } else{ ?>
<a href="list.php?page=<?php echo ($page-1); ?>">이전</a>
<?php };?>
<?php
/* pager : 페이지 번호 출력 */
for($print_page = $s_pageNum; $print_page <= $e_pageNum; $print_page++){
?>
<a href="list.php?page=<?php echo $print_page; ?>"><?php echo $print_page; ?></a>
<?php };?>
<?php
/* paging : 다음 페이지 */
if($page >= $total_page){
?>
<a href="list.php?page=<?php echo $total_page; ?>">다음</a>
<?php } else{ ?>
<a href="list.php?page=<?php echo ($page+1); ?>">다음</a>
<?php };?>
</p>
안녕하세요. 해당 포스트를 따라하여 저도 게시판 페이지를 구현 하였습니다. 몇날 며칠 검색하고 따라해보고 하다가 드디어 성공 하였는데요. 혹시 검색 기능도 추가 포스팅 해주시면 안될까요?
이름 검색, 가입기간 사이 검색등(2022-1-1~2022-5-4 사이 가입한 회원들 조회등.) 저에게 많은 도움 주셔서 감사합니다.