Php Datatables返回所有行,而不是10行
以下是我的AJAX:Php Datatables返回所有行,而不是10行,php,jquery,mysql,ajax,datatables,Php,Jquery,Mysql,Ajax,Datatables,以下是我的AJAX: $('.customers-datatable').dataTable( { "order": [[ 0, "asc" ]], "processing": true, "serverSide": true, "ajax": { url: 'ajax/customers.php?action=list', type: "POST" }, "columns": [ null,
$('.customers-datatable').dataTable( {
"order": [[ 0, "asc" ]],
"processing": true,
"serverSide": true,
"ajax": {
url: 'ajax/customers.php?action=list',
type: "POST"
},
"columns": [
null,
null,
null,
null,
null,
{ "orderable": false, "width": "20px" }
]
});
以下是我的PHP/MySql:
$req = $pdo->prepare('SELECT * FROM customers');
$req->execute();
$result['draw'] = 1;
$result['recordsTotal'] = $req->rowCount();
$result['recordsFiltered'] = 10;
$result['data'] = array();
while( $row = $req->fetch() ) {
$result['data'][] = array($row['lastname'] . ' ' . $row['firstname'], $row['zipcode'], $row['city'], $row['email'], $row['telephone'], "");
}
$req->closeCursor();
因此,我得到的不是10个元素,而是整个列表。以下是渲染内容的预览:
您知道如何将表格限制为10个结果吗?您是否选中了
limit
关键字
从客户限额0,10中选择*
一般来说,limit
会与orderbysome\u column DESC
相结合,赋予它更多的意义(比如,按时间或按id)
已更新:
要进行分页,只需在切换页面时传入不同的参数:
SELECT * FROM customers LIMIT 0,10 // 1-10 rows for page 1
SELECT * FROM customers LIMIT 10,10 // 11-20 rows for page 2
SELECT * FROM customers LIMIT 20,10 // 21-30 rows for page 3
.... and so on
使用数据表中的
pageLength
设置-例如
$('#myTable').dataTable( {
"pageLength": 10
});
这将输出10行好的,我找到了问题的解决方案 以下是我的新数据数组:
$result['data'][] = array( "name" => $row['lastname'] . ' ' . $row['firstname'],
"zipcode" => $row['zipcode'],
"city" => $row['city'],
"email" => $row['email'],
"telephone" => $row['telephone'],
"action" => "<a href=\"#\" class=\"button-delete\" id=\"" . $row['customer_id'] . "\"><i class=\"fa fa-close fa-2x text-danger\"></i></a>"
);
此查询分页将失败。@XavierC。您对文件中的分页一无所知code@XavierC. 我刚刚用一些分页的想法更新了答案。我知道如何使用limit参数限制结果的数量,但是除非我错了,否则使用datatables jquery脚本我不需要使用它,因为它会自己完成工作。好的,你能创建一个提琴让我们看看发生了什么吗?控制台中有错误吗?你应该阅读服务器端数据表发送的用于分页的
start
和length
参数(你可以使用var\u dump($\u POST)
检查所有发送的参数)。服务器应该负责查询数据库(分页、搜索、排序等),否则您无法从datatables提供的所有选项/灵活性中获益。
$('.customers-datatable').dataTable( {
"order": [[ 0, "asc" ]],
//responsive: true,
"processing": true,
"serverSide": false,
"ajax": {
url: 'ajax/customers.php?action=list',
type: "POST"
},
"columns": [
{ "data": "name" },
{ "data": "zipcode" },
{ "data": "city" },
{ "data": "email" },
{ "data": "telephone" },
{ "data": "action",
"orderable": "false",
"width": "20px"
}
]
});