2016-11-24 3 views
0

JQueryを使用してCodeigniterで簡単なAJAXページネーションを手伝ってもらえますか?私は行の配列を取得していると私はそれをpaginateする方法を知っていない。私のAJAX応答は複数の行になり、私はページごとに10の行にそれらを表示したい。親切に私を助けてください。CodeigniterのAJAXページネーション

MYビューファイル

<script> 
$(document).ready(function(){ 
$("#getreport").click(function(){ 
var fromdate = $('#date1').val(); 
var todate = $('#date2').val(); 
$("#header").css("visibility", "visible"); 
$("#bodycontent").empty(); 
$("#bodycontent").html('<div id="subcontent"></div>'); 
data = 
{ 
"from" : fromdate, 
"to" : todate 
} 
$.post('<?=site_url("report_controller/managesuppliers_report"); ?>', data ,function (result) { 
for(i=0;i<result["count"];i++){ 
$('#subcontent').after(
' <tr class="style"> '+ 
' <td><img src="<?php echo base_url(); ?>/uploads/images/' +result["records"] [i]["picture"] + '" width="30px" height="30px"></td> '+ 
' <td>' +result["records"][i]["suppliername"] + '</td> '+ 
' <td>' +result["records"][i]["contactperson"] + '</td> '+ 
' <td>' +result["records"][i]["mobilenumber"] + '</td> '+ 
' <td>' +result["records"][i]["phone"] + '</td> '+ 
' <td>' +result["records"][i]["email"] + '</td> '+ 
' </tr> '); 
} 
});  
}); 
}); 
</script> 
<div class="panel" id="header" style="visibility: hidden;"> 
<div class="panel-heading"> 
<span class="panel-title"></span> 
</div> 
<div class="table-responsive"> 
<table class="table allcp-form theme-warning fs13"> 
<thead> 
<tr class="bg-light"> 
<th class="">Image</th> 
<th class="">Supplier Name</th> 
<th class="">Contact Person</th> 
<th class="">Mobile Number</th> 
<th class="">Phone</th> 
<th class="">Email</th> 
<th class=""></th> 
</tr> 
</thead> 
<tbody id="bodycontent"> 

</tbody> 
</table> 
</div> 
</div> 

マイコントローラーオフセット取得のためのヘルパーで

public function managesuppliers_report() 
{ 
$query = $this->reportmodel->report_select($this->input->post('from'),$this->input->post('to')); 
$data['records'] = $query['records']; 
$data['count'] = $query['count']; 
$this->output->set_content_type('application/json'); 
$this->output->set_output(json_encode($data)); 
return $data; 
} 

私のモデルファイル

public function report_select($date1,$date2) 
{ 
$this->db->where('date >=', $date1); 
$this->db->where('date <=', $date2); 
$query=$this->db->get('suppliers'); 
$row = $query->result(); 
return array(
'records' => $row, 
'count' => count($row)); 
} 

答えて

1

メイク機能ファイル:

function getoffset($page=1,$per_page_val=10){ 
    if ($page == 1) 
    { 
     $offset = 0; 
    } 
    else 
    { 
     $offset = ($page - 1) * $per_page_val; 
    } 
    return $offset; 
} 

今、あなたは、1ページ目か2ページ目をクリックした場合、コントローラにページ値のパラメータを渡し、

さて、メインコントローラ、 2ページ目、だから、$ページ= 2であれば、あなたは10枚のレコードにしたい、$ per_page_val = 10.

$offset = getoffset($page,$per_page_val); 

今、私たちは二つの方法、 は、あなたが使うことができarray_slice、

$recordsArr = array_slice($records,$offset,$per_page_val); 

OR

あなたは、私はそれはあなたを助けることを願っていますリミットを使用して、クエリのオフセット、モデルでは 、

$this->db->limit($per_page_val, $offset); 

ことができます。

0

まず、テーブルにあるレコードの数を取得する必要があります。

 $total_records = $this->db->count_all('table_name'); 
     $item_per_pg = 10; 
     if ($total_records > 10)  
    { 
      $total_pages = ceil($total_records/$cat_per_pg); 

     echo "<ul class='pagination' id='disp_pagination_links'>"; 
       echo "<li id='0' class='item_prev'><a> &laquo; </a></li>"; 
       for ($page = 1; $page <= $total_pages; $page++) { 
        echo "<li id='" . $page . "'><a>" . $page . "</a></li>"; 
       } 
    echo "<li id='2' class='cat_next'><a> &raquo; </a></li>"; 


    } 
// In above code we have created pagination links. 

今、私はそれを願っていますフォロー

としてモデルに
public function model_function() 
{ 
    $this->db->select("*"); 
     $this->db->from("table_name"); 
     $this->db->limit($per_page, $start); 
     $query = $this->db->get(); 
     return $query->result(); 
} 

を選択クエリを発射follows-

$(document).on('click', '#disp_cat_data_pagi li', function() 
{ 
var page_no = $(this).attr('id'); // Get page no as id and send it to php 

    $.ajax({ 
      url: base_url + 'disp_records', 
      type: 'post', 
      data: {page_no: page_no}, 
      success: function (data) { 
       $('#disp_records').html(data); 

}); 

コントローラ

public function disp_records() 
{ 
$page = $this->input->post('page_no'); 
$page -= 1; 
      $per_page = 10; 
      $start = $page * $per_page; 
      $data = $this->model_name->model_function($start, $per_page); 
} 

そして最後として、ボタンのクリックイベントを追加が手伝う。

関連する問題