on
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