可数据的分页不使用Serveride显示

发布于 2025-02-09 09:11:00 字数 9007 浏览 3 评论 0原文

我正在使用jQuery DataTable显示数据库中的数据,除了没有显示分页号外,一切都很好,而且我无法弄清楚如何解决问题。

这是IM使用的代码:

html

<div class="row filter-row">
    ____Filter_FORM__
</div>
<div class="row">
    <div class="col-md-12 card-box">
        <div class="table-responsive">
            <table class="table table-striped custom-table datatable" id="productTable">
                <thead>
                    <tr>
                        <th><strong>Référence</strong> </th>
                        <th style="width:30%;"><strong>Article</strong></th>
                        <th><strong>Catégorie</strong></th>
                        <th><strong>Fournisseur</strong></th>
                        <th><strong>Prix Unitaire</strong></th>
                        <th><strong>Unité</strong></th>
                        <th class="text-center" style="width:20%;"><strong>Action</strong></th>
                    </tr>
                </thead>
                <tbody>
                    
                </tbody>
            </table>
        </div>
    </div>
</div>

jQuery

fill_datatable()
function fill_datatable(filter_supplier='', filter_category=''){
    var dataTable = $('#productTable').DataTable({
        "processing" : true,
        "serverSide" : true, 
        "order" : [],
        "searching" : false,
        "ajax" : {
            url: `ajax/products/list.php`,
            type: "POST",
            data: {
                filter_supplier: filter_supplier, 
                filter_category : filter_category,
            }
        }
    });
}

$("#filter_data").on('click', function(e){
    e.preventDefault()
    var filter_supplier = $("#filter_supplier").val();
    var filter_category = $("#filter_category").val();

    if(filter_supplier != '0' && filter_category !=  '0' ){
        $('#productTable').DataTable().destroy()
        fill_datatable(filter_supplier, filter_category)
    }else{
        
        $('#productTable').DataTable().destroy()
        fill_datatable()
    }

})

php代码

$column = array('reference', 'designation' ,'category_id' , 'supplier_id', 'unity_price', 'unity');
$query = "SELECT * FROM `products` ";

if(isset($_POST['filter_supplier'], $_POST['filter_category'])){

    if($_POST['filter_supplier'] != '0' && $_POST['filter_category'] != '0')
    {
        $query .= ' 
            WHERE supplier_id = "'.$_POST['filter_supplier'].'" AND category_id = "'.$_POST['filter_category'].'"
        ';
    }
    else if($_POST['filter_supplier'] == '0' && $_POST['filter_category'] != '0')
    {
        $query .= ' WHERE  category_id = "'.$_POST['filter_category'].'" ';
    }
    else if($_POST['filter_supplier'] != '0' && $_POST['filter_category'] == '0')
    {
        $query .= '  WHERE supplier_id = "'.$_POST['filter_supplier'].'" ';
    }
}


if(isset($_POST['order']))
{
    $query .= ' ORDER BY '.$column[$_POST['order']['0']['column']].' ' .$_POST['order']['0']['dir']. ' ';
}
else
{
    $query .= 'ORDER BY reference ASC';
}

$query1 = '';

if($_POST['length'] != -1)
{
    $query1 = ' LIMIT ' . $_POST['start'] .', ' . $_POST['length'] ;
}

$statement = $PDO->prepare($query);

$number_filter_row = $statement->rowCount();

$statement = $PDO->prepare($query . $query1);

$statement->execute();

$result = $statement->fetchAll();

if($statement->rowCount() != 0)
{
    foreach($result as $row)
    {

        $sub_array = array();
        $sub_array[] = $row['reference'];
        $sub_array[] = $row['designation'];
        $sub_array[] = Utils::categoryName($row['category_id']);
        $sub_array[] = Utils::getSupplierName($row['supplier_id']);
        $sub_array[] = $row['unity_price'];        
        $sub_array[] = $row['unity'];
        $sub_array[] = '
            <div class="dropdown pull-right">
                <a href="#" class="action-icon dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-ellipsis-v"></i></a>
                <ul class="dropdown-menu pull-right">
                    <li><a href="#" class="edit_product" data-id="'.$row['id'].'"><i class="fa fa-pencil m-r-5"></i> Modifier</a></li>
                    <li><a href="#" class="delete_product" data-id="'.$row['id'].'"><i class="fa fa-trash-o m-r-5"></i> Supprimer</a></li>
                
                </ul>
            </div>
        ';
        
        $data[] = $sub_array;
    }
}else{
    $sub_array = array('','','','','','','');
    $data[] = $sub_array;
}


function count_all_data($connect)
{
    $query = "SELECT * FROM `products` ";
    $statement = $connect->prepare($query);
    $statement->execute();
    return $statement->rowCount();
}

$output = array(
    'draw'              => intval($_POST['draw']),
    'recordsTotal'      => count_all_data($PDO),
    'recordsFiltered'   => $number_filter_row,
    'data'              => $data
);

echo json_encode($output);

屏幕截图 在屏幕截图下方,证明了我面临的问题。

我的代码中缺少什么? 谢谢

更新(JSON响应)

{
  "draw": 1,
  "recordsTotal": 1095,
  "recordsFiltered": 0,
  "data": [
    [
      "PR-00001",
      "5L COLLE FLOMBO",
      "Divers",
      "Ets Rami",
      "0.00",
      null,
      "\r\n            
<div class=\"dropdown pull-right\">\r\n                
                  <a href=\"#\" class=\"action-icon dropdown-toggle\" data-toggle=\"dropdown\" aria-expanded=\"false\">
                        <i class=\"fa fa-ellipsis-v\"></i>
                  </a>\r\n                
                  <ul class=\"dropdown-menu pull-right\">\r\n  
                        <li><a href=\"#\" class=\"edit_product\" data-id=\"2\"><i class=\"fa fa-pencil m-r-5\"></i> Modifier</a></li>\r\n  
                        <li><a href=\"#\" class=\"delete_product\" data-id=\"2\"><i class=\"fa fa-trash-o m-r-5\"></i> Supprimer</a></li>\r\n                \r\n                </ul>\r\n            
            </div>\r\n        "

    ],
    [
      "PR-00002",
      "ACIDE 1L",
      "Divers",
      "ECOTRA",
      "0.00",
      null,
      "\r\n
            <div class=\"dropdown pull-right\">\r\n                
                  <a href=\"#\" class=\"action-icon dropdown-toggle\" data-toggle=\"dropdown\" aria-expanded=\"false\">
                        <i class=\"fa fa-ellipsis-v\"></i>
                  </a>\r\n                
                  <ul class=\"dropdown-menu pull-right\">\r\n  
                        <li><a href=\"#\" class=\"edit_product\" data-id=\"2\"><i class=\"fa fa-pencil m-r-5\"></i> Modifier</a></li>\r\n  
                        <li><a href=\"#\" class=\"delete_product\" data-id=\"2\"><i class=\"fa fa-trash-o m-r-5\"></i> Supprimer</a></li>\r\n                \r\n                </ul>\r\n            
            </div>\r\n        "
    ],
 .... etc
}

**发布数据**

draw: 1
columns[0][data]: 0
columns[0][name]: 
columns[0][searchable]: true
columns[0][orderable]: true
columns[0][search][value]: 
columns[0][search][regex]: false
columns[1][data]: 1
columns[1][name]: 
columns[1][searchable]: true
columns[1][orderable]: true
columns[1][search][value]: 
columns[1][search][regex]: false
columns[2][data]: 2
columns[2][name]: 
columns[2][searchable]: true
columns[2][orderable]: true
columns[2][search][value]: 
columns[2][search][regex]: false
columns[3][data]: 3
columns[3][name]: 
columns[3][searchable]: true
columns[3][orderable]: true
columns[3][search][value]: 
columns[3][search][regex]: false
columns[4][data]: 4
columns[4][name]: 
columns[4][searchable]: true
columns[4][orderable]: true
columns[4][search][value]: 
columns[4][search][regex]: false
columns[5][data]: 5
columns[5][name]: 
columns[5][searchable]: true
columns[5][orderable]: true
columns[5][search][value]: 
columns[5][search][regex]: false
columns[6][data]: 6
columns[6][name]: 
columns[6][searchable]: true
columns[6][orderable]: true
columns[6][search][value]: 
columns[6][search][regex]: false
start: 0
length: 10
search[value]: 
search[regex]: false
filter_supplier: 
filter_category: 

I am using JQuery Datatable to display data from database and everything works well except the pagination numbers are not showing and I can't figure out how to solve the issue.

Here is the code Im using:

HTML

<div class="row filter-row">
    ____Filter_FORM__
</div>
<div class="row">
    <div class="col-md-12 card-box">
        <div class="table-responsive">
            <table class="table table-striped custom-table datatable" id="productTable">
                <thead>
                    <tr>
                        <th><strong>Référence</strong> </th>
                        <th style="width:30%;"><strong>Article</strong></th>
                        <th><strong>Catégorie</strong></th>
                        <th><strong>Fournisseur</strong></th>
                        <th><strong>Prix Unitaire</strong></th>
                        <th><strong>Unité</strong></th>
                        <th class="text-center" style="width:20%;"><strong>Action</strong></th>
                    </tr>
                </thead>
                <tbody>
                    
                </tbody>
            </table>
        </div>
    </div>
</div>

JQUERY

fill_datatable()
function fill_datatable(filter_supplier='', filter_category=''){
    var dataTable = $('#productTable').DataTable({
        "processing" : true,
        "serverSide" : true, 
        "order" : [],
        "searching" : false,
        "ajax" : {
            url: `ajax/products/list.php`,
            type: "POST",
            data: {
                filter_supplier: filter_supplier, 
                filter_category : filter_category,
            }
        }
    });
}

$("#filter_data").on('click', function(e){
    e.preventDefault()
    var filter_supplier = $("#filter_supplier").val();
    var filter_category = $("#filter_category").val();

    if(filter_supplier != '0' && filter_category !=  '0' ){
        $('#productTable').DataTable().destroy()
        fill_datatable(filter_supplier, filter_category)
    }else{
        
        $('#productTable').DataTable().destroy()
        fill_datatable()
    }

})

PHP CODE

$column = array('reference', 'designation' ,'category_id' , 'supplier_id', 'unity_price', 'unity');
$query = "SELECT * FROM `products` ";

if(isset($_POST['filter_supplier'], $_POST['filter_category'])){

    if($_POST['filter_supplier'] != '0' && $_POST['filter_category'] != '0')
    {
        $query .= ' 
            WHERE supplier_id = "'.$_POST['filter_supplier'].'" AND category_id = "'.$_POST['filter_category'].'"
        ';
    }
    else if($_POST['filter_supplier'] == '0' && $_POST['filter_category'] != '0')
    {
        $query .= ' WHERE  category_id = "'.$_POST['filter_category'].'" ';
    }
    else if($_POST['filter_supplier'] != '0' && $_POST['filter_category'] == '0')
    {
        $query .= '  WHERE supplier_id = "'.$_POST['filter_supplier'].'" ';
    }
}


if(isset($_POST['order']))
{
    $query .= ' ORDER BY '.$column[$_POST['order']['0']['column']].' ' .$_POST['order']['0']['dir']. ' ';
}
else
{
    $query .= 'ORDER BY reference ASC';
}

$query1 = '';

if($_POST['length'] != -1)
{
    $query1 = ' LIMIT ' . $_POST['start'] .', ' . $_POST['length'] ;
}

$statement = $PDO->prepare($query);

$number_filter_row = $statement->rowCount();

$statement = $PDO->prepare($query . $query1);

$statement->execute();

$result = $statement->fetchAll();

if($statement->rowCount() != 0)
{
    foreach($result as $row)
    {

        $sub_array = array();
        $sub_array[] = $row['reference'];
        $sub_array[] = $row['designation'];
        $sub_array[] = Utils::categoryName($row['category_id']);
        $sub_array[] = Utils::getSupplierName($row['supplier_id']);
        $sub_array[] = $row['unity_price'];        
        $sub_array[] = $row['unity'];
        $sub_array[] = '
            <div class="dropdown pull-right">
                <a href="#" class="action-icon dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-ellipsis-v"></i></a>
                <ul class="dropdown-menu pull-right">
                    <li><a href="#" class="edit_product" data-id="'.$row['id'].'"><i class="fa fa-pencil m-r-5"></i> Modifier</a></li>
                    <li><a href="#" class="delete_product" data-id="'.$row['id'].'"><i class="fa fa-trash-o m-r-5"></i> Supprimer</a></li>
                
                </ul>
            </div>
        ';
        
        $data[] = $sub_array;
    }
}else{
    $sub_array = array('','','','','','','');
    $data[] = $sub_array;
}


function count_all_data($connect)
{
    $query = "SELECT * FROM `products` ";
    $statement = $connect->prepare($query);
    $statement->execute();
    return $statement->rowCount();
}

$output = array(
    'draw'              => intval($_POST['draw']),
    'recordsTotal'      => count_all_data($PDO),
    'recordsFiltered'   => $number_filter_row,
    'data'              => $data
);

echo json_encode($output);

SCREENSHOT
Below a screenshot demonstrating the issue Im facing.

enter image description here

What I'm missing in my code ?
Thank you

UPDATE (json response)

{
  "draw": 1,
  "recordsTotal": 1095,
  "recordsFiltered": 0,
  "data": [
    [
      "PR-00001",
      "5L COLLE FLOMBO",
      "Divers",
      "Ets Rami",
      "0.00",
      null,
      "\r\n            
<div class=\"dropdown pull-right\">\r\n                
                  <a href=\"#\" class=\"action-icon dropdown-toggle\" data-toggle=\"dropdown\" aria-expanded=\"false\">
                        <i class=\"fa fa-ellipsis-v\"></i>
                  </a>\r\n                
                  <ul class=\"dropdown-menu pull-right\">\r\n  
                        <li><a href=\"#\" class=\"edit_product\" data-id=\"2\"><i class=\"fa fa-pencil m-r-5\"></i> Modifier</a></li>\r\n  
                        <li><a href=\"#\" class=\"delete_product\" data-id=\"2\"><i class=\"fa fa-trash-o m-r-5\"></i> Supprimer</a></li>\r\n                \r\n                </ul>\r\n            
            </div>\r\n        "

    ],
    [
      "PR-00002",
      "ACIDE 1L",
      "Divers",
      "ECOTRA",
      "0.00",
      null,
      "\r\n
            <div class=\"dropdown pull-right\">\r\n                
                  <a href=\"#\" class=\"action-icon dropdown-toggle\" data-toggle=\"dropdown\" aria-expanded=\"false\">
                        <i class=\"fa fa-ellipsis-v\"></i>
                  </a>\r\n                
                  <ul class=\"dropdown-menu pull-right\">\r\n  
                        <li><a href=\"#\" class=\"edit_product\" data-id=\"2\"><i class=\"fa fa-pencil m-r-5\"></i> Modifier</a></li>\r\n  
                        <li><a href=\"#\" class=\"delete_product\" data-id=\"2\"><i class=\"fa fa-trash-o m-r-5\"></i> Supprimer</a></li>\r\n                \r\n                </ul>\r\n            
            </div>\r\n        "
    ],
 .... etc
}

** POST DATA **

draw: 1
columns[0][data]: 0
columns[0][name]: 
columns[0][searchable]: true
columns[0][orderable]: true
columns[0][search][value]: 
columns[0][search][regex]: false
columns[1][data]: 1
columns[1][name]: 
columns[1][searchable]: true
columns[1][orderable]: true
columns[1][search][value]: 
columns[1][search][regex]: false
columns[2][data]: 2
columns[2][name]: 
columns[2][searchable]: true
columns[2][orderable]: true
columns[2][search][value]: 
columns[2][search][regex]: false
columns[3][data]: 3
columns[3][name]: 
columns[3][searchable]: true
columns[3][orderable]: true
columns[3][search][value]: 
columns[3][search][regex]: false
columns[4][data]: 4
columns[4][name]: 
columns[4][searchable]: true
columns[4][orderable]: true
columns[4][search][value]: 
columns[4][search][regex]: false
columns[5][data]: 5
columns[5][name]: 
columns[5][searchable]: true
columns[5][orderable]: true
columns[5][search][value]: 
columns[5][search][regex]: false
columns[6][data]: 6
columns[6][name]: 
columns[6][searchable]: true
columns[6][orderable]: true
columns[6][search][value]: 
columns[6][search][regex]: false
start: 0
length: 10
search[value]: 
search[regex]: false
filter_supplier: 
filter_category: 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一页 2025-02-16 09:11:00

由于@andrewjames的提示,

我更改

'recordsFiltered'   =>$number_filter_row,

为:

'recordsFiltered'   =>count_all_data($PDO),

The problem solved Thanks to @andrewJames Hints

I Changed

'recordsFiltered'   =>$number_filter_row,

To:

'recordsFiltered'   =>count_all_data($PDO),
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文