可数据的分页不使用Serveride显示
我正在使用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.
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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于@andrewjames的提示,
我更改
为:
The problem solved Thanks to @andrewJames Hints
I Changed
To: