jineecode
다음 글, 이전 글 php로 구현하기 본문
먼저 저는 php를 전문적으로 공부하지 않았으며 문제 해결 기록용으로 남깁니다.
제가 구현하는 게시판은 키 값이 글 번호이며 이러한 로직은 게시판의 게시물이 삭제되었을 때 문제가 발생한다는 것을 염두해주세요.
게시판

테이블
테이블명: opc_qna
컬럼명은 아래와 같습니다.

qna.php
<?php
   include $_SERVER['DOCUMENT_ROOT'].'/openconcert/process/connect/db_connect.php';
   $sql="select * from opc_qna order by OPC_QNA_num desc limit 5";
   $qna_result=mysqli_query($dbConn, $sql);
   while($qna_row=mysqli_fetch_array($qna_result)){
     $qna_res_num=$qna_row['OPC_QNA_num'];
     $qna_res_id=$qna_row['OPC_QNA_name'];
     $qna_res_tit=$qna_row['OPC_QNA_tit'];
     $qna_res_reg=$qna_row['OPC_QNA_reg'];
     $qna_res_hit=$qna_row['OPC_QNA_hit'];
  ?>opc_qna 테이블로부터 5개까지만 역순으로 OPC_QNA_num를 불러옵니다.
쿼리를 날려주고 while 반복문을 작성해줍니다.
게시판 제목에 걸려있는 태그
<span class="qna-tit">
	<a href="/openconcert/page/qna/qna_view.php?num=<?=$qna_res_num?>"class="qna-link">
	<?=$qna_res_tit?></a>
</span>게시판 제목인 $qna_res_tit를 클릭하면 자세한 게시판을 볼 수 있는 qna_view.php 로 넘어가는데 그 뒤에 ?num=<?=$qna_res_num?>을 붙혀서 클릭 시 주소 뒤에 해당 번호의 넘버가 붙도록 했습니다.

5번째 글을 클릭하면 주소창 뒤에 num이 붙습니다.
qna_view.php
      <?php
        $qna_detail_num=$_GET['num'];
        include $_SERVER['DOCUMENT_ROOT'].'/openconcert/process/connect/db_connect.php';
        // 해당 게시물 정보
        $sql="select * from opc_qna where OPC_QNA_num=$qna_detail_num";
        $result=mysqli_query($dbConn, $sql);
        $row=mysqli_fetch_array($result);
        $qna_detail_tit=$row['OPC_QNA_tit'];
        $qna_detail_name=$row['OPC_QNA_name'];
        $qna_detail_des=$row['OPC_QNA_desc'];
        $qna_detail_new_des=nl2br($qna_detail_des);
        $qna_detail_hit=$row['OPC_QNA_hit'];
        $new_hit=$qna_detail_hit + 1;
        $sql="update opc_qna set OPC_QNA_hit=$new_hit where OPC_QNA_num=$qna_detail_num";
        $qna_detail_reg=$row['OPC_QNA_reg'];
        mysqli_query($dbConn, $sql);
        // DB ROW COUNT
        $query = "SELECT * FROM opc_qna";
        $data = mysqli_query($dbConn, $query);
        $total_rows = mysqli_num_rows($data);
      ?>$qna_detail_num=$_GET['num'];
주소창 뒤에 붙은 num을 get방식으로 가져와 $qna_detail_num 에 저장합니다.
// 해당 게시물 정보
위와 같은 방식으로 opc_qna 테이블을 불러옵니다.
달라진 점은 hit 수 증가인데 이 게시물에선 다루지 않습니다.
// DB ROW COUNT
opc_qna 테이블의 행 갯수를 카운트합니다.
쿼리를 날려준 뒤 mysqli_num_rows 으로 행 갯수를 셉니다.
이 갯수는 $total_rows 에 저장해두었습니다.
>>지금부터 이전글, 다음글 작업입니다.
게시판

php가 전혀 들어가지 않은 상태입니다.
위는 아래 코드와 같습니다
이전글 다음글 마크업은 취향에 따라 만듭니다.
   <div class="view-list">이전글<span class="view-prev">등록된 이전글이 없습니다.</span>
   </div>
   <div class="view-list">다음글<span class="view-next">등록된 다음글이 없습니다.</span>
   </div>
php를 입혀봅니다.
qna_view.php
            <div class="view-list">이전글<span class="view-prev">
            <?php
            if($qna_detail_num - 1 == 0){
            ?>
              등록된 이전글이 없습니다.</span>
            </div>
            <?php
                } else {
              // 이전글 넘버
              $prev_num=$qna_detail_num-1;
              $prev_sql="select * from opc_qna where OPC_QNA_num=$prev_num";
              $prev_result=mysqli_query($dbConn, $prev_sql);
              $prev_row=mysqli_fetch_array($prev_result);
              $prev_qna_detail_tit=$prev_row['OPC_QNA_tit'];
              // echo $prev_qna_detail_tit;
            ?>
            <a href="/openconcert/page/qna/qna_view.php?num=<?=$prev_num?>">
              <?=$prev_qna_detail_tit?></a></span>
              </div>
            <?php
                }
            ?>
            <div class="view-list">다음글<span class="view-next">
            <?php
            if($qna_detail_num == $total_rows){
            ?>
              등록된 다음글이 없습니다.
            </span>
            </div>
            <?php
                } else {
            // 다음글 넘버
            $next_num=$qna_detail_num+1;
            $next_sql="select * from opc_qna where OPC_QNA_num=$next_num";
            $next_result=mysqli_query($dbConn, $next_sql);
            $next_row=mysqli_fetch_array($next_result);
            $next_qna_detail_tit=$next_row['OPC_QNA_tit'];
            // echo $next_qna_detail_tit;
            ?>
              <a href="/openconcert/page/qna/qna_view.php?num=<?=$next_num?>">
              <?=$next_qna_detail_tit?>
              </a></span>
            </div>
            <?php
                }
            ?>
로직은 이렇습니다.
이전글 : 현재의 넘버에서 -1 을 했을 때 0이면 '이전글이 없습니다' 출력, 아니면 이전글이 있습니다.
if($qna_detail_num - 1 == 0)
다음글 : 현재의 넘버 = 테이블의 행 갯수이면 '다음글이 없습니다' 출력, 아니면 다음글이 있습니다.
if($qna_detail_num == $total_rows)
이전글의 제목을 불러오는 방법
             // 이전글 넘버
              $prev_num=$qna_detail_num-1;
              $prev_sql="select * from opc_qna where OPC_QNA_num=$prev_num";
              $prev_result=mysqli_query($dbConn, $prev_sql);
              $prev_row=mysqli_fetch_array($prev_result);
              $prev_qna_detail_tit=$prev_row['OPC_QNA_tit'];
              // echo $prev_qna_detail_tit;현재의 넘버에서 -1 을 하면 이전글의 넘버가 나올 것입니다.
이 넘버와 맞는 OPC_QNA_num 을 매치시켜서 쿼리를 날려주고 해당 타이틀을 찾아 저장하면 됩니다.
다음글의 제목을 불러오는 방법
         $next_num=$qna_detail_num+1;
         $next_sql="select * from opc_qna where OPC_QNA_num=$next_num";
         $next_result=mysqli_query($dbConn, $next_sql);
         $next_row=mysqli_fetch_array($next_result);
         $next_qna_detail_tit=$next_row['OPC_QNA_tit'];이전글과 마찬가지로 코드합니다.
이를 가지고 코드하면 이렇게 되는 것입니다.
              <a href="/openconcert/page/qna/qna_view.php?num=<?=$next_num?>">
              <?=$next_qna_detail_tit?>
              </a>
결과

다시 한 번 말하지만 이 코드의 치명적인 단점은 키 값이 글 번호이기 때문에 게시물이 삭제 되었을 때 문제가 생깁니다.

2번 게시물이 삭제되었을 때,

jineecode.tistory.com/114?category=834643
php로 게시판 구체적으로 구현하기 (2)
jineecode.tistory.com/113?category=834643 php로 게시판 구체적으로 구현하기 (1) 먼저 저는 php를 전문적으로 공부하지 않았으며 문제 해결 기록용으로 남깁니다. 지금까지 구현해왔던 게시판은 키 값이 글
jineecode.tistory.com
위 문제를 해결한 글입니다.
'php' 카테고리의 다른 글
| php로 게시판 구체적으로 구현하기 (2) (0) | 2021.04.05 | 
|---|---|
| php로 게시판 구체적으로 구현하기 (1) (0) | 2021.04.05 | 
| 검색 폼 유형 (0) | 2021.03.31 | 
| nl2br로 줄바꿈을 한 textarea의 수정? (0) | 2021.03.29 | 
 
								 
								 
								