이 페이징 소스는 어떻게 활용해야 하나요?
본문
페이징 소스입니다.
<?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개 맞게 바꾸시면 아마 이 문제를 해결될듯합니다.
답변을 작성하시기 전에 로그인 해주세요.