【发布时间】:2020-12-01 06:17:07
【问题描述】:
我正在使用数据表服务器端。我正在使用 ajax 获取记录。我的问题是,搜索和分页不起作用。我正在获取搜索和分页以及所有数据。
请检查下图,我每页显示 10 条记录,但显示全部。
我在 StackOverflow 上查看了有关此主题的服务器问题。我几乎检查了每个问题,但仍然找不到解决方案。
我正在使用下面的代码
if($_REQUEST['action']=='adminList'){
$stmt = $pdo->prepare("SELECT count(*) FROM tbl_admin");
$stmt->execute();
$totalRecords = $stmt->fetchColumn();
$query="SELECT `admin_id`, `a_firstname`, `a_lastname`, `a_email`, `date_of_created` FROM `tbl_admin` WHERE is_active = 1 order by date_of_created DESC";
try {
$stmt = $pdo->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll();
$data['data'] = [];
foreach ($result as $row) {
$arr_result = array(
//"id" =>$i++,
"name" =>$row['a_firstname'].' '.$row['a_lastname'],
"email" => $row['a_email'],
"date_of_created" => $row['date_of_created'],
);
$data['data'][] = $arr_result;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$json_data = array(
"draw"=> intval( $_REQUEST['draw'] ),
"recordsTotal" => intval($totalRecords),
"recordsFiltered" => intval($totalRecords),
"data" => $data['data']
);
// echo "<pre>";
//print_r($json_data);
echo json_encode($json_data);
//exit();
}
Js
$(document).ready(function() {
var dataTable = $('#adminList').DataTable({
"processing": true,
"serverSide": true,
"paging": true,
"searchable": true,
"ajax": {
url: "fetch.php",
type: "post",
data: {
action: "adminList"
}
},
language: {
sLengthMenu: "Show _MENU_", // remove entries text
searchPlaceholder: "Search",
emptyTable: "No record found",
search: ""
},
"pageLength": 10,
"paging": true,
"columns": [{
"data": "name"
},
{
"data": "email"
},
{
"data": "date_of_created"
}
]
});
});
这是我的输出
Array
(
[draw] => 1
[recordsTotal] => 17
[recordsFiltered] => 17
[data] => Array
(
// getting my all records
)
)
谁能帮我看看我的代码有什么问题?
【问题讨论】:
-
legacy.datatables.net/examples/data_sources/server_side.html 上有一些(旧)示例代码。对于分页,请查看
if ( isset( $_GET['iDisplayStart'] ) && $_GET['iDisplayLength'] != '-1' ),因为您的代码始终获取所有数据(不是您的 SQL 中的 LIMIT) -
@NigelRen,但是我必须在哪里添加该代码?我相信来自数据表插件。
-
@NigelRen,如果我在查询中使用 LIMIT,那么我将只获得有限的价值..对吗?我必须显示所有记录,并且每页必须显示 10 条记录
-
LIMIT 允许您说出要返回的记录集 - 看看Pagination using MySQL LIMIT, OFFSET
-
@NigelRen,我在查询中设置了 LIMIT 10。所以现在我只得到 10 条记录,但其他记录呢?我相信数据表可以处理所有此类限制。
标签: php jquery datatables pagination server-side