한번씩 읽고 가세요.
“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”
- Frederick Philips Brooks
Mythical Man-Month 저자
728x90
게시판 기능 구현
게시판 목록 구현하기
<?php
if(isset($_GET['page'])){
$page = (int) $_GET['page'];
} else {
$page = 1;
}
$viewNum = 10;
$viewLimit = ($viewNum * $page) - $viewNum;
//1~20 DESC LIMIT 0, 20 ---> page1 (viewNum * 1) - viewNum
//21~40 DESC LIMIT 20, 20 ---> page2 (viewNum * 2) - viewNum
//41~60 DESC LIMIT 40, 20 ---> page3 (viewNum * 3) - viewNum
//61~80 DESC LIMIT 60, 20 ---> page4 (viewNum * 4) - viewNum
$sql = "SELECT b.boardID, b.boardTitle, m.youName, b.regTime, b.boardView FROM board b JOIN members m ON(b.memberID = m.memberID) ORDER BY boardID DESC LIMIT {$viewLimit},{$viewNum}";
$result = $connect -> query($sql);
if($result){
$count = $result -> num_rows;
if($count > 0){
for($i=0; $i<$count; $i++){
$info = $result -> fetch_array(MYSQLI_ASSOC);
echo "<tr>";
echo "<td>".$info['boardID']."</td>";
echo "<td><a href='boardView.php?boardID={$info['boardID']}'>".$info['boardTitle']."</a></td>";
echo "<td>".$info['youName']."</td>";
echo "<td>".date('Y-m-d', $info['regTime'])."</td>";
echo "<td>".$info['boardView']."</td>";
echo "</tr>";
};
}
}
?>
첫번째론 page를 정의 해줍니다.
if(isset($_GET['page'])){
$page = (int) $_GET['page'];
} else {
$page = 1;
}
두번째는 viewNum을 정해주고
viewLimit를 viewNum* page -viewNum으로 정의 해줍니다.
그 후 sql문을 써서 값을들 불러온 후 그 후 DESC LIMIT 를 {$viewLimit},{$viewNum}"로 정해줍니다.
$viewNum = 10;
$viewLimit = ($viewNum * $page) - $viewNum;
//1~20 DESC LIMIT 0, 20 ---> page1 (viewNum * 1) - viewNum
//21~40 DESC LIMIT 20, 20 ---> page2 (viewNum * 2) - viewNum
//41~60 DESC LIMIT 40, 20 ---> page3 (viewNum * 3) - viewNum
//61~80 DESC LIMIT 60, 20 ---> page4 (viewNum * 4) - viewNum
$sql = "SELECT b.boardID, b.boardTitle, m.youName, b.regTime, b.boardView FROM board b JOIN members m ON(b.memberID = m.memberID) ORDER BY boardID DESC LIMIT {$viewLimit},{$viewNum}";
$result = $connect -> query($sql);
다음으론 sql문으로 boardID를 선택해가져와 줍니다.
$sql = "SELECT count(boardID) FROM board";
$result = $connect -> query($sql);
$boardTotalCount = $result -> fetch_array(MYSQLI_ASSOC);
$boardTotalCount = $boardTotalCount['count(boardID)'];
//총 페이지 갯 수
$boardTotalCount = ceil($boardTotalCount/$viewNum);
그리고 boardTotalCount 를 count(boardID) 아이디값 갯 수로 정의 해줍니다.
그 후 또 다시 boardTotalCount 를 재정의 해줍니다. ceil(boardTotalCount/viewNum)보더 토탈 값을 뷰 넘버 값으로 나눈 뒤 올림을 해주어 총 페이지 값으로 바꿔줍니다.
$pageView = 5;
$startPage = $page - $pageView;
$endPage = $page + $pageView;
//처음 페이지 초기화//마지막 페이지 초기화
if($startPage < 1) $startPage = 1;
if($endPage >= $boardTotalCount) $endPage = $boardTotalCount;
//처음으로 이전
if($page != 1 && $page <= $boardTotalCount ){
$prevPage = $page-1;
echo "<li><a href='board.php?page=1'>처음으로</a></li>";
echo "<li><a href='board.php?page={$prevPage}'>이전</a></li>";
}
//페이지
for($i=$startPage; $i<=$endPage; $i++){
$active = "";
if($i == $page) $active = "active";
if($page <= $boardTotalCount ){
echo "<li class='{$active}'><a href='board.php?page={$i}'>{$i}</a></li>";
}
}
//마지막으로 다음
if($page != $boardTotalCount && $page <= $boardTotalCount){
$nextPage = $page+1;
echo "<li><a href='board.php?page={$nextPage}'>다음</a></li>";
echo "<li><a href='board.php?page={$boardTotalCount}'>마지막으로</a></li>";
}
?>
미션
pageView를 5개로 정해주고
startpage를 page - pageView
endpage를 page + pageView
정의하여 앞에 5개 뒤에 5개가 나오게 해줍니다.
//처음 페이지 초기화//마지막 페이지 초기화
if($startPage < 1) $startPage = 1;
if($endPage >= $boardTotalCount) $endPage = $boardTotalCount;
처음페이지와 마지막 페이지를 초기화 해줍니다.
만약 시작페이지가 1보다 작을때 시작 페이지를 1로 해주고
만약 끝 페이지가 페이지 총갯수보다 클 때 끝페이지는 페이지 총 갯수로 정해줍니다.
//처음으로 이전
if($page != 1 && $page <= $boardTotalCount ){
$prevPage = $page-1;
echo "<li><a href='board.php?page=1'>처음으로</a></li>";
echo "<li><a href='board.php?page={$prevPage}'>이전</a></li>";
}
마지막으로 버튼을 만들어줍니다.
처음으로 가는 버튼과 이전으로 가는 버튼을 만들어주기 위해 조건을 부여합니다.
만약 페이지가 1이 아니고 페이지가 페이지 총 갯수 보다 작을때만
echo를 출력해줍니다.
//페이지
for($i=$startPage; $i<=$endPage; $i++){
$active = "";
if($i == $page) $active = "active";
if($page <= $boardTotalCount ){
echo "<li class='{$active}'><a href='board.php?page={$i}'>{$i}</a></li>";
}
}
//마지막으로 다음
if($page != $boardTotalCount && $page <= $boardTotalCount){
$nextPage = $page+1;
echo "<li><a href='board.php?page={$nextPage}'>다음</a></li>";
echo "<li><a href='board.php?page={$boardTotalCount}'>마지막으로</a></li>";
}
페이지와 마지막,다음 버튼까지
만들어주면 밑에 버튼이 생깁니다.