jQuery Datatable - 使用Php的服务器端处理数据分页

时间:2015-04-07 12:25:34

标签: php jquery datatables jquery-datatables

我遇到了jquery datatable分页问题(服务器端处理)。

例如,我在数据库中有24条记录。计数正确显示,总分页也正确显示。

enter image description here

当我点击Next or 2nd page时,它会根据显示页面长度显示记录。enter image description here

此处3rd Page最后4条记录未显示。

这里我的服务器端代码是这样的

$this->db->select("SQL_CALC_FOUND_ROWS user_id,user_name,email", FALSE);

        $this->db->from("users");
     $sTable="users";
        // Data set length after filtering
        $this->db->select('FOUND_ROWS() AS found_rows');
        $iFilteredTotal = $this->db->get('users')->row()->found_rows;

        // Total data set length
        $iTotal = $this->db->count_all($sTable);


        // Output
        $output = array(
            'sEcho' => intval($sEcho),
            'iTotalRecords' => $iTotal,
            'iTotalDisplayRecords' => $iFilteredTotal,
            'aaData' => array()
        );

客户端代码就像这样

$(document).ready(function () {
        $('#data_appraiser').dataTable({
            "bProcessing": true,
            "bServerSide": true,
            "oLanguage": {
                "sProcessing": imgsrc,
            },
            //"aaData": data.aaData,
             "iDisplayLength": 10,
             "aLengthMenu": [
                             [10, 25, 50],
                             [10, 25, 50] // change per page values here
                         ],
                "aaSorting": [[0, 'asc']],
                "sServerMethod": "POST",
                    "sAjaxSource": "appraiserlistajaxdata",

            "sPaginationType": "full_numbers"
            "aoColumns": [
                { "mData": "id" },
                { "mData": "appraiser_name" },
                { "mData": "user_name" }
               ....
            ]        
        });
    });

我检查了$iFilteredTotal总计数。当页面更改时,值为20。如果它在1st page中,则值为24。我无法解决这个问题。对不起,如果我的问题是我们的问题。任何人都可以帮我解决这个问题。感谢

1 个答案:

答案 0 :(得分:0)

您必须分别将s​​tart和length(如$ _GET ['start'])作为偏移量和限制并应用于查询。