[포폴] php로 게시판 만들기2

전예원·2022년 1월 17일
0

PHP, APACHE

목록 보기
13/14

페이지 목록을 다 출력했으니, 이제 페이징 처리를 해보자.
이 부분에서 삼항연산자를 아주 줄기차게 사용했다. 삼항 연산자 최고... php 특성상 if문을 사용하면 너무 글이 길어지는? 중복되는 것을 많이 써야하는 단점이 있었다. 그래서 if문 대신 삼항 연산자를 사용하니 한줄만으로 해결이되어서 삼항연산자를 매우 잘썼다.

🍎 이전페이지, 이전 목록 부분

<p class="page_prev">

<?php if ($page <= 1) { ?>
  <a href="notice.php?page=1" title="이전 페이지"><i class="fas fa-angle-left"></i></a>
  
<?php } else { ?>

  <a href="notice.php?page=<?php echo $now_block == 1 ? '1' : ($now_block - 1) * 5; ?>" title="이전 목록" title="이전 목록"><i class="fas fa-angle-double-left"></i></a>
  <a href="notice.php?page=<?php echo $page - 1; ?>" title="이전 페이지"><i class="fas fa-angle-left"></i></a>
  
<?php } ?>

</p>
  • 만약 페이지가 1보다 작으면 이전페이지 버튼만 보여준다. 그게 아니라면 이전페이지, 이전목록 버튼도 다 보여준다.
  • 이전페이지, 이전목록 버튼 다 보여주면
  • 먼저 이전페이지는 누를 때마다 page-1 이런식으로 작동한다. 그러다가 페이지가 1보다 작으면
    이런 식인 것이다.
  • 이전 목록보기는 페이지가 1포함 1보다 작으면 보이지 않는 버튼이다. 이전 목록은 현재 블럭이 1이라면 1페이지로 이동한다. 그게 아니라면 (현재 블럭 -1) * 5 페이지로 이동한다.
  • 이런 방식인 것이다. 2번 블록에 몇번 페이지든간에 누르든지 1번 블록에 마지막 번호, 3번 블록에 무슨 페이지에 있든 간에 누르면 2번블록 마지막 번호
  • 저기에 *5는 내가 정한 $page_num = 5;이다. 만약 내가 한 블록당 보여지는 페이지수를 3으로 했음 저곳이 3인 것이다. 변수로 적어주면 나중에 수정하기 편하다. (하지만 나는 그냥 5로 정해서 간단하게 5로 표현했다)

🍎 다음 페이지, 다음 목록 부분

<p class="page_next">

<?php if ($page >= $total_page) { ?>

  <a href="notice.php?page=<?php echo $total_page; ?>">
  <i class="fas fa-angle-right"></i>
  </a>

<?php } else { ?>

  <a href="notice.php?page=<?php echo $page + 1; ?>">
  <i class="fas fa-angle-right"></i>
  </a>
  <a href="notice.php?page=<?php echo $now_block != 1 ? ($now_block == $total_block ? $total_page : $now_block * 5 + 1) : $e_pageNum + 1; ?>" title="다음 목록">
  <i class="fas fa-angle-double-right"></i>
  </a>

<?php } ?>

</p>
  • 만약 페이지가 전체 페이지 수보다 크면, 페이지는 무조건 마지막 페이지 넘버이고, 다음 페이지 버튼만 보여준다. 그게 아니면 다음페이지, 다음 목록 버튼 2개다 보여준다.
  • 페이지가 토탈 페이지 수보다 크면 무조건 토탈페이지 수이다.
    2블럭은 10페이지 가지 있지만, 토탈 페이지수는 8이다. 그래서 9페이지는 없으니 아무리 이전페이지를 눌러도 8번페이지이다.
  • > 버튼은 페이지+1 이다. 한 페이지씩 증가하게 해주는 것이다.
  • >> 버튼은 다음 블럭에 있는 젤 첫번째 번호로 가게해주는 버튼이다. 만약 내가 현재 있는 블럭이 1이 아니라면 밑에서 설명하고/ 내가 위치한 블럭이 1이라면(1,2,3,4,5 페이지 중에 위치해있다면) => $e_pageNum+1(5+1=6page)으로 간다.
  • 내가 현재 있는 블럭이 1이 아니라면, 현재 블럭이 총 블럭수와 일치 즉, 내가 있는 블럭이 마지막 블럭이라면
  1. 마지막 페이지로 이동한다.
  2. 그게 아니라면 총 4번 블럭까지 있고 내가 2번 블럭, 3번 블럭 등에 위치해 있다면 =>현재 블럭 * list_num + 1을 한 페이지로 이동한다. 2번블럭 5 + 1 = 11페이지로 이동, 3번블럭 5 + 1 = 16페이지로 이동

🍎 페이지 부분 출력하기

<div class="page_num">

<ul>

  <?php for ($print_page = $s_pageNum; $print_page <= $e_pageNum; $print_page++) { ?>
  
  <li>
  <a id="page<?php echo $print_page; ?>" href="notice.php?page=<?php echo $print_page; ?>"><?php echo $print_page; ?></a>
  </li>
  
  <?php } ?>

</ul>

</div>
  • 반복문 for문을 li 태그 부분을 반복해준다.
profile
앞으로 나아가는 중~

0개의 댓글