簡體   English   中英

dataTable 切換到沒有條目的下一頁 - 分頁問題

[英]dataTable switch to next page with no entry - paging issue

我想使用帶有服務器端分頁的 dataTables 中的表在監視器上顯示來自 mysql 數據庫的記錄。 每邊的最大行數應為 14。當填滿數據庫並到達第 14 行時,表已經開始分頁 (.) 顯示消息“未找到匹配的記錄”......然后它切換回 1-14 的頁面行....

知道我在這里做錯了什么嗎?

我的代碼如下:

php頁面創建json數組

//fetch.php
$connect = new PDO("mysql:host=localhost;dbname=eflightbook", "root", "");
$column = array("usersName", "usersFirstname", "fldirector");
$query = "SELECT usersName, usersFirstname, TIME(date), fldirector, t1.*
FROM users, flightbook t1
WHERE usersLoginStatus <> 'false'
AND id = anw_id
AND t1.date = (SELECT MAX(t2.date)
                FROM users, flightbook t2
                WHERE t2.anw_id = t1.anw_id)

";

if(isset($_POST['order']))
{
    $query .= 'ORDER BY '.$column[$_POST['order']['0']['column']].' '.$_POST['order']['0']['dir'].' ';
}
else
{
    $query .= 'ORDER BY TIME(date) ASC ';
}
$query1 = '';
if($_POST['length'] != -1)
{
    $query1 = 'LIMIT ' . $_POST['start'] . ', ' . $_POST['length'];
}
$statement = $connect->prepare($query);
$statement->execute();
$number_filter_row = $statement->rowCount();
$result = $connect->query($query . $query1);
$data = array();
foreach($result as $row)
{
    $sub_array = array();
    $sub_array[] = $row['usersName'];
    $sub_array[] = $row['usersFirstname'];
    $sub_array[] = $row['TIME(date)'];
    $sub_array[] = ($row['fldirector'] == "1") ? "✔" : "";
    $data[] = $sub_array;
}
function count_all_data($connect)
{
    $query = "SELECT anw_id, usersName, usersFirstname, TIME(date), fldirector, t1.*
    FROM users, flightbook t1
    WHERE usersLoginStatus <> 'false'
    AND id = anw_id
    AND t1.date = (SELECT MAX(t2.date)
                    FROM users, flightbook t2
                    WHERE t2.anw_id = t1.anw_id)
    
    ";
    $statement = $connect->prepare($query);
    $statement->execute();
    return $statement->rowCount();
}
$output = array(
    "draw"      =>  intval($_POST["draw"]),
    "recordsTotal"  =>  count_all_data($connect),
    "recordsFiltered"   =>  $number_filter_row,
    "data"      =>  $data
);
echo json_encode($output);
?>


**Monitor html/php Page**
  

<script>

// Active Pilots Table 

$(document).ready(function(){
    function load_data(start, length)
    {
        var dataTable = $('#datatable').DataTable({
            "processing" : false,
            "serverSide" : true,
            "pageLength" : 14,
            "lenghtChange" : false,
            "language": {
             "emptyTable": "** kein Eintrag **"},
             "columnDefs": [
                       {
                        targets: -1,
                        className: 'dt-body-center'
                       }],
            "responsive" : false,
            "autoWidth" : false,
            "ordering" : false,
            "searching" : false,
            "scrollCollapse" : true,
            "binfo" : false,
            "bFilter" : false,
            "bLengthChange" : false,
            dom: "lfrti",
            "order" : [],
           "retrieve": true,
            "ajax" : {
                url:"activep.php",
                method:"POST",
                data:{start:start, length:length}
            },
            "drawCallback" : function(settings){
                var page_info = dataTable.page.info();

                console.log(page_info);
             
            }
        });
    }
    load_data();


    var table = $('#datatable').DataTable();

    setInterval(function(){ 

    var info = table.page.info();

    if (info.start < info.end) {
        var page_number = (info.page < info.pages) ? info.page + 1 : 1; 
    }
    else {
        page_number = 0;
     
    }
    ;

    table.page(page_number).draw(false); 

}, 6000);

});

你的問題在這里:

var info = table.page.info();

if (info.start < info.end) {
    var page_number = (info.page < info.pages) ? info.page + 1 : 1; 
}
else {
    page_number = 0;
 
}
;

table.page(page_number).draw(false);

有兩個問題。 首先,具體回答您的問題:假設info.page等於info.pages (這意味着您有一頁記錄),您將頁碼設置為 1,但該屬性的索引為 0 (以及此處的文檔) ,所以你實際上是在將它強制到第二頁:

var page_number = (info.page < info.pages) ? info.page + 1 : 1;

然后,您將該頁碼值傳遞給您的表:

table.page(page_number).draw(false);

第二個問題(這不是你的具體問題的原因,但在變量范圍方面肯定是有問題的):你在if語句的 scope 內定義了page_number變量,然后在 scope 之外使用它。這種類型的變量應避免聲明。 您應該在if語句之外聲明變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM