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

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

질문맨 9년 전 조회 4,015

페이징 소스입니다.

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

 

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

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

 

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

 

페이지가 1 2 3 4 5 6

 

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

 

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

 

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

 

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

 

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

답변 1개

채택된 답변
+20 포인트
복스리
9년 전

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

 

그누보드나 영카트인경우 현재 등록된 건수를 count를 하지 않고.http://bokslee.com/mysql/tbl_structure.php?db=gnuboard5&token=259d726b84e456038f168cd0c78453fd&table=g5_board">g5_board 란 테이블을 열어보시면

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

 

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

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

 

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

 

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

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

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

로그인