이 페이징 소스는 어떻게 활용해야 하나요?

이 페이징 소스는 어떻게 활용해야 하나요?

QA

이 페이징 소스는 어떻게 활용해야 하나요?

답변 1

본문

페이징 소스입니다.


<?php
 
        // 간단 구현 페이징
 
        function page_nav($total,$scale,$p_num,$page,$query)
        {
                global $PHP_SELF;
 
                $total_page = ceil($total/$scale);
                if (!$page) $page = 1;
                $page_list = ceil($page/$p_num)-1;
                
                // 페이지 리스트의 첫번째가 아닌 경우엔 [1]...[prev] 버튼을 생성한다.
                if ($page_list>0) 
                {
                        $navigation = "<a href='$PHP_SELF?page=1&$query'>[1]</a> ... ";
                        $prev_page = ($page_list-1)*$p_num+1;
                        $navigation .= "<a href='$PHP_SELF?page=$prev_page&query'>[prev]</a> ";
                }
 
                // 페이지 목록 가운데 부분 출력
                $page_end=($page_list+1)*$p_num;
                if ($page_end>$total_page) $page_end=$total_page;
 
                for ($setpage=$page_list*$p_num+1;$setpage<=$page_end;$setpage++)
                {
                        if ($setpage==$page) {
                                $navigation .= "<b>[$setpage]</b> ";
                        } else {
                                $navigation .= "<a href='$PHP_SELF?page=$setpage&$query'>[$setpage]</a> ";
                        }
                }
 
                // 페이지 목록 맨 끝이 $total_page 보다 작을 경우에만, [next]...[$total_page] 버튼을 생성한다.
                if ($page_end<$total_page) 
                {
                        $next_page = ($page_list+1)*$p_num+1;
                        $navigation .= "<a href='$PHP_SELF?page=$next_page&$query'>[next]</a> ";
                        $navigation .= "... <a href='$PHP_SELF?page=$total_page&$query'>[$total_page]</a>";
                }
        
                return $navigation;
        }
?>
 
<?php
        $total_data=14513;
        $num_per_page=40;
        $page_per_list=10;
        $query="id=hobb";
 
        $nav=page_nav($total_data,$num_per_page,$page_per_list,$page,$query);
 
        echo $nav;
        echo ("<form action=$PHP_SELF>
                        페이지 : <input type=text name=page size=4>
                        <input type=submit value='이동'></form>
        ");
?>

 

그리고 저 위 소스를 응용한 제 소스입니다. (밑 부분이 제 소스입니다.)


      <?php
        $view_article = 1;
        if (!$page) $page = 1;
        $start = ($page-1)*$view_article;
        
        $sql = "select count(*) from {$g5['shop_table']}";
        $result = sql_query($sql);
        $temp = sql_fetch_array($result);
        $total_article = $temp[0];
 
        $sql = "select * from {$g5['shop_table']} order by mb_no desc limit $start, $view_article";
        $result = sql_query($sql);
        
        $cnt = 0;
        for($i=0; $list=sql_fetch_array($result); $i++){

 

저렇게 해서 페이징 나오는거까진 됐는데

 

페이지가 1 2 3 4 5 6

 

이렇게 잘 나오고 눌르면 똑같이 맞아 떨어지고 값이 나오는데

 

페이지가 356개 까지 있습니다..ㅠㅠ

 

어떻게 응용해야할까요 도와주세요

 

게시글은 5개밖에 없는데 페이지가 356개 있씁니다,,

 

이 질문에 댓글 쓰기 :

답변 1

페이지가 늘어가는건 지금 올리신 페이징 소스 부분에 문제가 있어서 그런게 아닐듯합니다.

 

그누보드나 영카트인경우 현재 등록된 건수를 count를 하지 않고.g5_board 란 테이블을 열어보시면

bo_count_write 필드에 등록된 건수를 기록 하고 있습니다.

 

이건 select count를 하여 구지 속도를 느리게 하지 않게 하기 위함으로 고안해 놓은 듯 생각됩니다.

따라서 페이지가 많이나오게 된다는 이야기는 bo_count_write 필드에 보시면 아마 5개 보다 더 많은 숫자로 셋팅되었을겁니다..

 

이부분은 5개 맞게 바꾸시면 아마 이 문제를 해결될듯합니다.

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #page ×
전체 13
© SIRSOFT
현재 페이지 제일 처음으로