-
-
// 데이터베이스 연결 설정 - $link = mysql_connect("localhost", "mysql_user" , "mysql_password")
- 또는 die("연결할 수 없습니다: " . mysql_error())
- // 현재 페이지 번호 가져오기
- if( isset($_GET['page']) ){
- $page = intval( $_GET['page'] );
- }
- else{
- $page = 1;
- }
- //페이지당 페이지 수
- $PageSize = 10;
- //총 데이터 양 가져오기
- $sql = "테이블에서 양으로 count(*) 선택";
- $result = mysql_query($sql);
- $row = mysql_fetch_row($ result);
- $amount = $row['amount'];
- // 총 페이지 수 계산
- if( $amount ){
- if( $amount < $page_size ){ $page_count = 1; } //총 데이터 양이 $PageSize보다 작으면 페이지가 하나만 있는 것입니다
- if( $amount % $page_size ){ //나머지 가져오기 전체 데이터량을 페이지 수로 나눈 값
- $page_count = (int)($amount / $page_size) 1; //나머지가 있으면 전체 데이터량을 페이지 수로 나눈 값과 같습니다. 페이지 수, 반올림하고 1을 더함
- }else{
- $page_count = $amount / $page_size; //나머지가 없으면 페이지 수는 총 데이터 양을 페이지 수로 나눈 값과 같습니다. 페이지 수
- }
- }
- else{
- $page_count = 0;
- }
// 페이지 넘김 링크
- $page_string = '';
- if( $page == 1 ){
- $page_string .= '첫 번째 페이지 |이전 페이지|';
- }
- else{
- $page_string .= '< ;a href="/?page=1>";첫 번째 페이지|이전 페이지| ';
- }
- if( ($page == $page_count) || ($page_count == 0) ){
- $page_string .= '다음 페이지|마지막 페이지';
- }
- else{
- $page_string .= '다음 페이지|마지막 페이지' ;
- }
- // 데이터를 가져와서 2차원 배열 형식으로 결과를 반환합니다
- if( $amount ){
- $sql = "ID 설명 제한에 따른 테이블 순서에서 * 선택". ($page -1)*$page_size .", $page_size";
- $result = mysql_query($sql);
-
- while ( $row = mysql_fetch_row($result) ){
- $rowset[] = $row;
- }
- }else{
- $rowset = array();
- }
- // 결과를 표시하는 코드가 포함되어 있지 않으므로 논의 범위에 속하지 않습니다. 단지 foreach를 사용하여 얻은 2차원 배열을 사용하여 결과를 표시하는 것은 매우 간단합니다
- ?>< ;/p>
-
코드 복사
4. OO 스타일 페이징 코드
다음 데이터베이스 연결은 pear db 클래스를 사용하여 처리됩니다.
코드 복사 2. PHP 페이징 코드 테스트
-
- // 파일명 : test_pager.php
- // 배 사용을 생략한 간단한 샘플 코드입니다. 데이터베이스 연결을 설정하기 위한 전면 db 클래스 코드
- require "Pager.class.php"
- if ( isset($_GET['page']) )
- {
- $page = (int) $_GET ['페이지'];
- }
- else
- {
- $page = 1;
- }
- $sql = "ID별로 테이블 순서에서 * 선택"; >$ pager_option = array(
- "sql" => $sql,
- "PageSize" => 10,
- "CurrentPageID" => $page
- )
- if ( isset ( $_GET['numItems']) )
- {
- $pager_option['numItems'] = (int)$_GET['numItems'];
- }
- $pager = @new Pager( $ pager_option);
- $data = $pager->getPageData();
- if ( $pager->isFirstPage )
- {
- $turnover = "홈페이지|이전 페이지|";
- }
- else
- {
- $turnover = "홈페이지|< ; a href="/?page=".$pager->PreviousPageID."&numItems=".$pager->numItems."'>이전 페이지|";
- }
- if ( $pager->isLastPage )
- {
- $turnover .= "다음 페이지|마지막 페이지";
- }
- else
- {
- $turnover .= "NextPageID."&numItems=".$pager->numItems."'>다음 페이지|numPages."&numItems=".$pager->numItems."'>마지막 페이지";
- }
- ?>
-
코드 복사
지침:
이 클래스는 데이터 처리만 하고 표시는 담당하지 않습니다. 데이터 처리와 결과 표시를 하나의 클래스에 넣는 것이 조금 꺼려지기 때문입니다.
표시 상황과 요구 사항은 변경 가능합니다. 이 Pager 클래스에 따르면 자체 하위 클래스를 상속하여 다양한 페이지 매기기 목록을 표시할 수 있습니다.
- Class MemberPager는 Pager를 확장합니다
- {
- function showMemberList()
- {
- global $db ;
-
- $data = $this->getPageData()
- // 결과를 표시하는 코드
- // ......
- }
- }
- /// 호출
- if ( isset($_GET['page']) )
- {
- $page = (int)$_GET['page'];
- }
- else
- {
- $page = 1;
- }
- $sql = "ID별 멤버 순서에서 * 선택";
- $pager_option = array(
- "sql" => $ sql ,
- "PageSize" => 10,
- "CurrentPageID" => > $pager_option['numItems'] = (int)$_GET['numItems'];
- }
- $pager = @new MemberPager($pager_option);
- $pager->showMemberList();
- ?>
-
-
- 코드 복사
-
-
데이터베이스마다 결과를 가로채는 쓰기 방법이 다릅니다.
mysql: 테이블 제한 오프셋, 행에서 * 선택
pgsql: 테이블 제한 m 오프셋 n에서 * 선택
...
클래스에서 결과를 얻을 때는 pear db 클래스의limitQuery 메소드를 사용해야 합니다.
|