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