8. 게시판 목록 수정(2) - 페이징 처리
페이지 정보
작성자 관리자 댓글 0건 조회 1,040회 작성일 22-01-13 22:23본문
8. 게시판 목록 수정(2) - 페이징 처리
게시글이 많을 때는 메이징 처리하여 일부만 보이게 한다.
보통 10개정도를 페이징 처리하지만 여기서는 3개로 해보겠다.
파일 : index.php
<?php
require_once("./dbConnect.php");
if(isset($_GET['page'])){
$page=$_GET['page'];
}else{
$page=1;
}
$sql = "select count(*) as cnt from bbs";
$result = $db->query($sql);
$row = $result->fetch_array();
$allArticle = $row['cnt']; //전체 게시글 수
if(empty($allArticle)) {
$emptyData = '<tr><td class="emptyMsg" colspan="5">검색된 글이 없습니다.</td></tr>';
} else {
$displayArticle =3; //한페이지당 보여줄 게시글수
$allPage =ceil($allArticle/$displayArticle); //전체페이지 수
if($page < 1 || ($allPage&&$page > $allPage)){
?>
<script>
alert("존재하지 않는 페이지 입니다!!!");
history.back();
</script>
<?php
exit;
}
$block = 3; //보여줄 페이지 수 1 2 3, 4 5 6
$currentBlock = ceil($page/$block); //현재 페이지가 있는 블럭
$allBlock = ceil($allPage/$block);//전체 블럭수
//현재의 블럭에서 첫페이지
$firstPage = ($currentBlock * $block) - ($block - 1);
if($currentBlock == $allBlock){
$lastPage = $allPage; //현재 블럭이 마지막 블럭이면 $allPage가 마지막 페이지이다.
} else {
$lastPage = $currentBlock * $block;//
}
$prevPage = (($currentBlock-1)*$block); // 이전페이지, 블럭이 2블럭일 경우(4 5 6) 이전을 누르면 3페이지로 이동;
$nextPage = (($currentBlock+1)*$block)-($block - 1);//다음 페이지로 이동
$paging = '<ul>';
//첫페이지가 아닌 경우에는 처음 버튼을 생성한다.
if($page !=1 ){
$paging .='<li class="startPage"><a href="./index.php?page=1">처음 </a></li>';
}
//첫 블럭이 아닌 경우에는 이전 버튼을 생성
if($currentBlock !=1){
$paging .='<li class="prevPage"><a href="./index.php?page='.$prevPage.'">◀</a></li>';
}
for($i = $firstPage; $i <=$lastPage; $i++){
if($i==$page){
$paging.='<li class="currentPage">'.$i.'</li>';
}else{
$paging .='<li class="page"><a href="./index.php?page='.$i.'">'.$i.'</a></li>';
}
}
//마지막 블럭이 아닌 경우에는 다음 버튼을 생성한다.
if($currentBlock !=$allBlock){
$paging.='<li class="nextPage"><a href="./index.php?page='.$nextPage.'">▶</a></li>';
}
//마지막 페이지가 아니라면 끝 버튼을 생성한다.
if($page !=$allPage){
$paging .='<li class="endPage"><a href="./index.php?page='.$allPage.'"> 끝</a></li>';
}
$paging .='</ul>';
$currentLimit = ($displayArticle*$page)-$displayArticle; // 3개의 게시글을 가져오기위한 첫번째 위치설정
$sqlLimit = ' limit '.$currentLimit.','.$displayArticle;
$sql = 'select * from bbs order by b_no desc'.$sqlLimit;
// 최근에 작성된 글이 맨위로 올라온다.
$result = $db->query($sql);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>게시판</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./css/style1.css"/>
</head>
<body>
<article class="boardArticle">
<div id="list">
<h3>반응형 게시판 </h3>
<table>
<thead>
<tr>
<th scope="col" class="no"> 번호</th>
<th scope="col" class="subject">제목</th>
<th scope="col" class="author">작성자</th>
<th scope="col" class="date">작성일</th>
<th scope="col" class="hit">조회</th>
</tr>
</thead>
<tbody>
<?
if(isset($emptyData)) {
echo $emptyData;
$paging=null;
} else {
while($row=$result->fetch_array()){
$datetime = explode(' ', $row['b_date']); // 시간과 날짜를 나눈다.
$date = $datetime[0]; //년월일
$time = $datetime[1]; //시분초
if($date == Date('Y-m-d'))
$row['b_date'] = $time;
else
$row['b_date'] = $date;
?>
<tr>
<td class="no"><?=$row['b_no']?></td>
<td class="subject"><a href="./view.php?no=<?=$row['b_no']?>"><?=$row['b_subject']?></a></td>
<td class="author"><?=$row['b_id']?></td>
<td class="date"><?=$row['b_date']?></td>
<td class="hit"><?=$row['b_hit']?></td>
</tr>
<?php
}
}
?>
</tbody>
</table>
<div class="btnSet">
<?php
if(isset($emptyData)) {?>
<a href="./index.php">목록보기</a>
<?php } ?>
<a href="./write.php" class="btnWrite">글쓰기</a>
</div>
<div class="paging">
<?=$paging?>
</div>
</div>
</article>
</body>
</html>
페이징 스타일을 추가한다.
#list .paging {
width:720px; text-align:center;
}
#list .paging li {
display:inline-block; width:30px; height:30px; margin:0 5px;
border:1px solid #777;background:#b3b3b3;
line-height:21px;
}
#list .paging li.currentPage, li.hover {
background:#777;
}
#list .paging li.currentPage, li.hover a{
color:#fff;
}
댓글목록
등록된 댓글이 없습니다.