테스트 사이트 - 개발 중인 베타 버전입니다

페이징 처리 질문입니다. 채택완료

시로님 9년 전 조회 4,799

/* 페이징 시작 */

//페이지 get 변수가 있다면 받아오고, 없다면 1페이지를 보여준다.

if(isset($_GET['page'])) {

$page = $_GET['page'];

} else {

$page = 1;

}

$sql = 'select count(*) as cnt from g5_write_sub03_01 order by wr_id desc';

$result = sql_query($sql);

$row = sql_fetch_array($result);

$allPost = $row['cnt']; //전체 게시글의 수

echo "전체게시글 수:" .  $allPost;

$onePage = 5; // 한 페이지에 보여줄 게시글의 수.

$allPage = ceil($allPost / $onePage); //전체 페이지의 수

if($page < 1 && $page > $allPage) {

?>

exit;

}

$oneSection = 10; //한번에 보여줄 총 페이지 개수(1 ~ 10, 11 ~ 20 ...)

$currentSection = ceil($page / $oneSection); //현재 섹션

$allSection = ceil($allPage / $oneSection); //전체 섹션의 수

$firstPage = ($currentSection * $oneSection) - ($oneSection - 1); //현재 섹션의 처음 페이지

if($currentSection == $allSection) {

$lastPage = $allPage; //현재 섹션이 마지막 섹션이라면 $allPage가 마지막 페이지가 된다.

} else {

$lastPage = $currentSection * $oneSection; //현재 섹션의 마지막 페이지

}

$prevPage = (($currentSection - 1) * $oneSection); //이전 페이지, 11~20일 때 이전을 누르면 10 페이지로 이동.

$nextPage = (($currentSection + 1) * $oneSection) - ($oneSection - 1); //다음 페이지, 11~20일 때 다음을 누르면 21 페이지로 이동.

$paging = '

    '; // 페이징을 저장할 변수

    //첫 페이지가 아니라면 처음 버튼을 생성

    if($page != 1) { 

    $paging .= '

  • 처음
  • ';

    }

    //첫 섹션이 아니라면 이전 버튼을 생성

    if($currentSection != 1) { 

    $paging .= '

  • 이전
  • ';

    }

    for($i = $firstPage; $i <= $lastPage; $i++) {

    if($i == $page) {

    $paging .= '

  • ' . $i . '
  • ';

    } else {

    $paging .= '

  • ' . $i . '
  • ';

    }

    }

    //마지막 섹션이 아니라면 다음 버튼을 생성

    if($currentSection != $allSection) { 

    $paging .= '

  • 다음
  • ';

    }

    //마지막 페이지가 아니라면 끝 버튼을 생성

    if($page != $allPage) { 

    $paging .= '

  • ';

    }

    $paging .= '

';

/* 페이징 끝 */

$currentLimit = ($onePage * $page) - $onePage; //몇 번째의 글부터 가져오는지

$sqlLimit = ' limit ' . $currentLimit . ', ' . $onePage; //limit sql 구문

$sql = 'select * from g5_write_sub03_01 order by wr_id desc' . $sqlLimit; //원하는 개수만큼 가져온다. (0번째부터 20번째까지

$result = sql_query($sql);

?>

 

 

한 페이지에 게시글이 5개인 경우로 조건을 걸었는데

화면에는 글 6개가 모두 나오고 있습니다.

 

그리고 1페이지를 눌러도 6개의 게시글이 다 나오고

2페이지를 눌러도 6개의 게시글이 다 나오고 있습니다.

 

url쪽 문제인가요 아니면 다른 부분이 틀렸는지 도움을 주시면 감사하겠습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트

마지막 쿼리를 출력해서  $sqlLimit 부분 확인해 보세요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인