PHP 프로그래밍

본문 바로가기
사이트 내 전체검색


PHP 프로그래밍
PHP 프로그래밍

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;

}





16.PNG


댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.