PHP 페이징 + Ajax (코드이그나이터)

PHP 페이징 + Ajax (코드이그나이터)

function paging ( $table , $currentPage = null )

{

$blockCount = 10 ;

$blockPage = 10 ;

$rowCount = $this -> Common_model -> get_table_query_cnt ( $table , "*" ) ;

if ( $currentPage == null )

$currentPage = 1 ;

$totalPage = floor(( $rowCount - 1 ) / $blockPage ) + 1 ;

if ( $totalPage < $currentPage )

$currentPage = $totalPage ;

if ( $currentPage < 1 )

$currentPage = 1 ;

$data [ 'startCount' ] = ( $currentPage - 1 ) * $blockCount ;

$data [ 'startPage' ] = floor(( $currentPage - 1 ) / $blockPage ) * $blockPage + 1 ;

$data [ 'endPage' ] = $data [ 'startPage' ] + $blockCount - 1 ;

if ( $data [ 'endPage' ] > $totalPage )

$data [ 'endPage' ] = $totalPage ;

$data [ 'limitArray' ] = Array ( $data [ 'startCount' ] , $blockCount ) ;

$data [ 'currentPage' ] = $currentPage ;

$data [ 'blockPage' ] = $blockPage ;

$data [ 'totalPage' ] = $totalPage ;

return $data ;

}

blockCount : 한 번에 보여질 게시물 수

blockPage : 한 번에 보여질 페이지 수

currentPage : 현재 페이지

totalPage : DB에서 가져온 전체 레코드 수를 blockPage로 나눈 값

( 총 레코드 17개를 가져왔다면 2페이지, 5개를 가져왔다면 1페이지)

startCount : 현재 페이지 게시물의 처음 인덱스

(2번페이지면 11번, 3번 페이지면 21번) -> DB 에서 (mysql) 11번부터 10개 가져오라는 등의 작업을 할때 필요

limitArray : mysql에서 limit 1,10 을 실행하기 위한 Array (코드이그나이터에서 기본 제공하는 함수 이용)

startPage : 현재 페이지블록의 처음, => 현재 페이지가 7이라면 1

endPage : 현재 페이지블록의 끝 => 현재 페이지가 7이라면 10

처음 1페이지의 화면은 (메뉴에서 해당 뷰를 선택할 때) 로드로 보여준다

컨트롤러

function view_sleep_info()

{

$head['menu_idx'] = 'sleep_info'; //Head Menu

$side['sub_menu_idx'] = 'sleep_info'; //Side Menu

$data = $this->paging("TB_DAILY", 1);

$data['list'] = $this->Common_model->get_table_query('TB_DAYS', NULL, NULL, Array('seq', 'desc'), $data['limitArray']);

$this->load->view("custom_header", $head);

$this->load->view("contents/sleep_info", $data);

$this->load->view("side", $side);

$this->load->view("footer");

}

뷰 화면

data-sticky-table-header= "true" data-add-display-all-btn= "true" data-add-focus-btn= "false" >

번호

QRCODE

매트리스 포지션

수면시간 분할

뒤척임

얕은 수면

깊은 수면

수면일

수면시간

수면데이터

등록일

foreach ( $list as $row ): ?>

1

>

>>

2페이지부터는 AJax 처리

function view_sleep_info_ajax($currentPage = null)

{

$data = $this->paging("TB_DAILY", $currentPage);

$data['list'] = $this->Common_model->get_table_query('TB_DAYS', NULL, NULL, Array('seq', 'desc'), $data['limitArray']);

echo json_encode($data);

}

function getPaging(url) {

$.ajax({

url: "/main/view_sleep_info_ajax/" + url,

type: "GET",

dataType: "json",

success: function (data) {

console.log(data);

var rstHtml = '';

if (data.list.length > 0) {

$.each(data.list, function (key, value) {

rstHtml += "";

rstHtml += "" + data.list[key].SEQ + "";

rstHtml += "" + data.list[key].QRCODE + "";

rstHtml += "" + data.list[key].POSITION + "";

rstHtml += "" + data.list[key].SLEEP_BIT + "";

rstHtml += "" + data.list[key].ACTIVE + "";

rstHtml += "" + data.list[key].LIGHT + "";

rstHtml += "" + data.list[key].DEEP + "";

rstHtml += "" + data.list[key].SLEEP_DATE + "";

rstHtml += "" + data.list[key].SLEEP_TIME + "";

rstHtml += "" + data.list[key].SLEEP_DATA + "";

rstHtml += "" + data.list[key].REGDT + "";

rstHtml += "";

});

} else {

rstHtml += "";

rstHtml += " " + "데이터가 존재하지 않습니다" + " ";

rstHtml += "";

}

$('#sleep_list_data').empty();

$('#sleep_list_data').html(rstHtml);

var pagingHtml = '';

if (data.currentPage > data.blockPage) {

pagingHtml += "";

pagingHtml += "<<";

pagingHtml += "";

pagingHtml += "";

pagingHtml += "<";

pagingHtml += "";

}

for (var i = data.startPage; i <= data.endPage; i++) {

if (i == data.currentPage) {

pagingHtml += "";

} else {

pagingHtml += "";

}

pagingHtml += "" + i;

pagingHtml += "";

}

if (data.totalPage - data.startPage > data.blockPage) {

pagingHtml += "";

pagingHtml += ">";

pagingHtml += "";

pagingHtml += "";

pagingHtml += ">>";

pagingHtml += "";

}

$('#pagination').empty();

$('#pagination').html(pagingHtml);

},

error: function (e) {

}

});

}

from http://yuar.tistory.com/27 by ccl(A) rewrite - 2020-04-02 13:01:16