이 페이징 소스는 어떻게 활용해야 하나요? 채택완료
페이징 소스입니다.
</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개
페이지가 늘어가는건 지금 올리신 페이징 소스 부분에 문제가 있어서 그런게 아닐듯합니다.
그누보드나 영카트인경우 현재 등록된 건수를 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개 맞게 바꾸시면 아마 이 문제를 해결될듯합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인