Paging 검색된 Database 레코드를 Paging 구성하는 방법을 안내합니다.

확인해 주세요

Paging은 Database Method에 귀속되어 작동됩니다.

사용 준비

Paging을 사용하기 위해선 아래와 같이 Controller 최상단에 use 가 선언 되어야 합니다.
Paging은 Database에 귀속되어 작동되기 때문에 use Make\Database\Pdosql 가 함께 선언 되어야 합니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;
use Make\Library\Paging;
Paging Query를 수행하기 위해 새로운 Paging 인스턴스를 생성합니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;
use Make\Library\Paging;

...

$sql = new Pdosql();
$paging = new Paging();

Paging Query 실행

Paging 이 적용된 Query를 실행합니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;
use Make\Library\Paging;

...

$sql = new Pdosql();

$sql->query(
    $paging->query(
        "
        SELECT mb_idx, point_in
        FROM {$sql->table("mbpoint")}
        WHERE mb_idx=:col1
        ORDER BY regdate DESC
        ",
        array(
            MB_IDX
        )
    )
);
위와 같이 query 할 수 있으며, 구문에서 :col1, :col2 와 같이 칼럼을 bind 할 수 있습니다.

속도가 개선된 Paging Query 실행

메소드가 전달된 쿼리문을 'SELECT COUNT(*)' 로 변조하여 발견된 데이터의 전체 개수를 빠르게 계산할 수 있도록 옵션이 제공됩니다.
데이터가 많은 table을 Paging 처리 하는 경우 아래와 같이 네번째 인자($getQuery)를 비활성화 하여 속도를 소폭 향상시킬 수 있습니다.
(GROUP BY, HAVING 이 적용된 쿼리의 경우 오류가 발생할 수 있으므로 사용시 주의가 필요합니다.)
Controller /app/test.php
<?php
use Make\Database\Pdosql;
use Make\Library\Paging;

...

$sql = new Pdosql();

$sql->query(
    $paging->query(
        "
        SELECT mb_idx, point_in
        FROM {$sql->table("mbpoint")}
        WHERE mb_idx=:col1
        ORDER BY regdate DESC
        ",
        array(
            MB_IDX
        ),
        $dspError = true, // error display 여부
        $getQuery = false // having 구문으로 인해 쿼리 오류 발생하는 경우 getQuery 옵션 활성화
    )
);

Paging Limit 설정

Database 에서 select된 레코드를 한 페이지에 최대 몇개의 레코드로 분리하여 보여줄 것인지 설정합니다.
설정한 최대 개수만큼 레코드를 분리하여 하단 페이징을 표현합니다.

limit 은 Query문 상위에 배치 합니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;
use Make\Library\Paging;

...

$sql = new Pdosql();

$paging->setlimit(SET_LIST_LIMIT);

$sql->query(
    $paging->query(
        "
        SELECT *
        FROM {$sql->table("mbpoint")}
        WHERE mb_idx=:col1
        ORDER BY regdate DESC
        ",
        array(
            MB_IDX
        )
    )
);
위 예제는 config.set.php 에서 설정한 환경설정 기준으로 limit 개수를 자동 설정합니다.
만약, 임의로 limit 개수를 설정하려는 경우, 아래 예시와 같이 변경하여 설정합니다.
$paging->setlimit(20);

Fetch 및 레코드 색인

Paging Query 에서의 Fetch 및 레코드 색인 방법은 Database 기본 구문과 동일합니다.
사용 방법은 아래 연관 가이드 바로가기를 확인하세요.

View 에 페이지 Navigator 삽입

Paging 이 적용된 웹페이지 하단에 Navigator를 삽입하여 접속자가 페이지를 전환하여 레코드를 확인할 수 있도록 구성합니다.
View에서 Navigator를 출력할 수 있도록 Controller에서 관련 변수를 전달 합니다.
Controller /app/test.php
<?php
use Make\Database\Pdosql;
use Make\Library\Paging;

...

$sql = new Pdosql();

$sql->query(
    $paging->query(
        "
        SELECT *
        FROM {$sql->table("mbpoint")}
        WHERE mb_idx=:col1
        ORDER BY regdate DESC
        ",
        array(
            MB_IDX
        )
    )
);

$this->set('pagingprint', $paging->pagingprint(''));
그런 다음, View에서 Navigator 출력을 원하는 위치에 아래 코드를 삽입합니다.
View /theme/zigger-default/html/test.tpl.php
<div class="paging">
    <?php echo $pagingprint; ?>
</div>