PHP 페이징처리

김석재·2023년 3월 13일
0

PHP

목록 보기
3/6
<?php
// 총 게시글 개수를 구하기
$lengthSql = "select COUNT(*) from educommunity e";
$stmt = $dbconn->prepare($lengthSql);
$stmt->execute();

$row = $stmt->fetch();

$count = $row['count'];

//페이지 길이 - 게시글 갯수 / 8 소수점 올림
$length = ceil($count / 8);

//페이지 블럭의 이전 이후 조건(이전이나 이후를 눌렀을때 해당 블럭의 첫번째 페이지로 넘어가도록 했음)
if($_GET['page'] % 2 == 0){
    $prevPage = $_GET['page'] - 3;
} else{
    $prevPage = $_GET['page'] - 2;
}

if($_GET['page'] % 2 == 0){
    $nextPage = $_GET['page'] + 1;
} else{
    $nextPage = $_GET['page'] + 2;
}

// 시작 페이지는 현재 페이지 / 2의 나머지에서 -1이 현재 페이지 블럭. 현재 페이지 블럭 * 페이지수(2) + 1
$startPage = (ceil($_GET['page'] / 2) - 1) * 2 + 1;
// 마지막 페이지는 현재 페이지 블럭 * 2. 마지막 페이지가 페이지 총 길이보다 크면 두개가 동일한 값이 되도록
$endPage =  ceil($_GET['page'] / 2) * 2;
if($endPage >= $length){
    $endPage = $length;
}

// offset값 = (현재 페이지 넘버 -1) * 8
$num = ($_GET['page'] - 1) * 8;

$pageSql = "select * from educommunity e order by ec_regdt asc LIMIT 8 offset '{$num}'";

$stmt = $dbconn->prepare($pageSql);
$stmt->execute();

$rows = $stmt->fetchAll();

?>

<p>
<!--    처음페이지-->
    <a href="/board/board.php?page=1">처음으로</a>
<!--    이전페이지-->
    <?php
    if($_GET['page'] > 2){
        ?>
        <a href="/board/board.php?page=<?php echo $prevPage; ?>">이전</a>
        <?php };?>
<!--    페이지 번호-->
<!--    -->
    <?php
    for($page = $startPage; $page <= $endPage; $page++){
        ?>
        <a href="/board/board.php?page=<?php echo $page; ?>"><?php echo $page; ?></a>
    <?php };?>
<!--    다음페이지-->
    <?php
    if($_GET['page'] < $length){
        ?>
        <a href="/board/board.php?page=<?php echo $nextPage; ?>">다음</a>
    <?php }
    ?>
<!--    마지막페이지-->
    <a href="board.php?page=<?php echo ceil($length);?>">마지막으로</a>
</p>

0개의 댓글