질문좀 할께요 ~ 외부 xml 읽어와서 페이징 구현중입니다.

질문좀 할께요 ~ 외부 xml 읽어와서 페이징 구현중입니다.

QA

질문좀 할께요 ~ 외부 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 를 설정하는 변수가 없는건 상관없는 부분인가요? 

답변을 작성하시기 전에 로그인 해주세요.
전체 67
QA 내용 검색
filter #xml ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT