본문 바로가기
PHP 게시판 만들기

13. php로 기초적인 게시판 만들기 - list.php

by 똑똑한 영장류 2012. 12. 17.


Chap. 13


이어서 목록 보여주기 위한 기능을 구현해 봅시다.


http://mydomain.com/bbs/list.php 로 접근하면 글 목록을 보여줘야겠군요.

한번에 다 못 보여주면 페이지를 지정해줘야겠지요?

GET 방식으로 아래와 같이 페이지를 지정할 수 있도록 합시다.


http://mydomain.com/bbs/list.php?page=1


아래코드로 list.php 를 시작합시다.



<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/preset.php';
include $_SERVER['DOCUMENT_ROOT'].'/header.php';
?>
        목록<br />
       
<?php
    include $_SERVER['DOCUMENT_ROOT'].'/footer.php';
?> 




이렇게 시작합니다.



$q = "SELECT * FROM ap_bbs";
$result = $mysqli->query( $q);
$total_record = $result->num_rows;


우선 ap_bbs 에 글이 있는지 없는지 부터 확인을 합니다.

$total_record 가 0이 아니면, 테이블을 이용해서 목록을 표시하고 아니면, 글이 없다고 표시합니다.


php 변수를 체크해서 html로 화면에 뿌려야합니다. php와 html이 섞이게 됩니다.

이때 if 문을 효율적으로 사용할 수 있는 방법은 아래와 같습니다.


<?php if($total_record==0) :?>
    글이 없습니다.
<?php else :?>
              
<?php endif?>



php 문법에서 if 뒤에 따라오는 { } 들을 위 방식으로 대체해서 손쉽게 html 코드와 섞어 쓸 수 있습니다.


목록<br /> 아래에 위 코드를 기록합시다.


else 안을 작성해 봅시다.

뭔가 표시를 할 것이 있으니까, 제대로 값을 가져와야겠지요.


글목록을 표시할 때, 한 페이지에 몇개를 표시할지, 현재 몇번째 페이지를 표시할지를 알아야겠지요?


if( isset($page) ) {
    $now_page = $page;
}
else {
    $now_page = 1;
}


한 페이지에 표시할 글 수를 5개로 설정합시다.


$record_per_page = 5;


한페이지에 표시할 글 수와 현재 페이지를 아니까, 쿼리에서 가져올 글의 위치와 갯수를 설정해 줍시다.



$start_record = $record_per_page*($now_page-1);
$record_to_get = $record_per_page;

if( $start_record+$record_to_get > $total_record) {
  $record_to_get = $total_record - $start_record;
}

$q = "SELECT * FROM ap_bbs WHERE 1 ORDER BY doc_idx DESC LIMIT $start_record, $record_to_get";
$result = $mysqli->query($q);


테이블 안에 데이터들이 쭈욱~ 있는데, 원하는 페이지의 글들만 가져오려면, 몇번 데이터부터 몇개를 가져와야하는지를 계산하고, 쿼리에 적용을 한 내용입니다.


$result 안에 있는 데이터들을 하나씩 fetch 해서 화면에 뿌려주면 되겠습니다.


<table class="table">
    <thead>
        <th>글번호</th>
        <th>제목</th>
        <th>작성자 인덱스</th>
        <th>등록일시</th>
    </thead>
<?php while($data = $result->fetch_array()) :?>
    <tr>
        <td><?php echo $data['doc_idx']?></td>
        <td><?php echo $data['subject']?></td>
        <td><?php echo $data['member_idx']?></td>
        <td><?php echo $data['reg_date']?></td>
    </tr>
   
<?php endwhile ?>
</table>


table 태그에 클래스를 table 로 설정해줬습니다. 이 클래스는 부트스트랩에서 제공합니다.


이제 list.php에 접속해 봅시다.




위 처럼 보입니다.


위에 header 부분이 이전과 바뀌었죠?

'홈'은 index.php 로, '게시판 글쓰기'는 write.php로 가는 링크입니다. 뒤에 보이는 숫자는 로그인한 사용자의 member_idx 를 나타냅니다.


더 수정할 내용들은 다음 편에 계속하겠습니다.


이상!








댓글