질문좀 할께요 ~ 외부 xml 읽어와서 페이징 구현중입니다.
본문
외부 xml 읽어와서 페이징 구현중입니다.
아래의 코드에서 페이징이 제대로 되질 않습니다.... 어디가 문제일까요?
<?
$total = count($arr);
$page = $page ? $page : 1;
$bcount = 20; // 한화면에 보여줄 목록 갯수
$totalpage=ceil($total/$bcount);
?>
<table border="1">
<thead>
<tr>
<th nowrap>No</th>
<th nowrap>제목</th>
<th nowrap>내용</th>
</tr>
</thead>
<tbody>
<?
$_bcount = $total; // 전체적인 카운트 변수(전체 순번 및 역순 관련)
$_page = 1; // 전체적인 카운트 변수 관련(전체 순번 및 역순 관련)
$k = 0; // 해당 페이지 카운트 변수
for($i=($page-1)*$bcount;$i<=($page-1)*$bcount+$bcount-1;$i++) :
if(($total-$i) > 0) : // 테이블이 존재 할때 있을때
$f_table_tot++;
$sno =($total -($total -($i +($_bcount*($_page - 1))))+1);// 전체 순서적인 번호
$eno =($total -($i +($_bcount*($_page - 1)))); // 전체 역순 번호
?>
<tr>
<td><?=$sno;?></td>
<td><?=$arr['subject'];?></td>
<td><?=$arr['content'];?></td>
</tr>
<?
$k++; // 해당 페이지 카운트 변수
endif; // if(($total-$i) > 0) : // 테이블이 존재 할때 있을때
endfor;
?>
</tbody>
</table>
<?=get_paging($pagecount, $page, $totalpage, $_SERVER['PHP_SELF']."?".$page_str); ?>
답변 2
$arr 에 항상 전부 다 들어가있나요?
DB에서 전부다 긁어와서 $arr에 다 집어넣고
PHP에서 보여줄 때 해당 갯수 필터링 해서 보여주는 형태는 비효율 적입니다.
페이지네이션이 제대로 되면
애초에 DB에서 가져올때 페이지에서 필요한 갯수만큼만 가져오도록
적절히 Limit 를 걸게 되어있습니다.
그래서 $arr은 항상 bcount와 동일한 숫자만 들어있도록요.
get_pagination도 그런 알고리즘을 기반으로 만들어져있던것 같아서요.
페이지가 바뀜에 따라
1. 실제 DB 쿼리가 어떻게 들어가는지(LIMIT로 페이지네이션 하는지)
2. $arr에 어떤 값이 얼마나 들어있는지
등을 살펴 보심 좋을것 같습니다
외부 xml 이군요 그럼 작성하신대로 하면 크게 문제 없을것 같은데
페이징이 제대로 되지 않는다는 건 어떻게 동작한다는 설명일까요?
page변수가 잘 들어오는지
count 갯수가 잘 맞는지 확인해보면 어떠실까요?
page_str 를 설정하는 변수가 없는건 상관없는 부분인가요?
답변을 작성하시기 전에 로그인 해주세요.