我在这里有示例数组:http://pastebin.com/raw.php?i=rU287x69
我希望它与2 result per page
分页。
分页将基于url参数($_GET['page']
)
我的数组有7 objects
。因此,max
页面将为4
,因为它会显示2 per page
。
我已经对它进行了编码,但即使页面数量不足,问题仍然存在。
实施例。 ?page=5
仍有来自page 4
$page_page = 2;
$page = ! empty( $_GET['page'] ) ? (int) $_GET['page'] : 1;
$total = count($apps);
$totalPages = ceil( $total/ $page_page );
$page = max($page, 1);
$page = min($page, $totalPages);
$offset = ($page - 1) * $page_page;
if( $offset < 0 ) $offset = 0;
$apps = array_slice( $apps, $offset, $page_page );
print_r($apps);
我的代码出了什么问题?
答案 0 :(得分:2)
你的逻辑错误。
...
order: [[0, 'asc']],
processing: true,
serverSide: true,
"fnInitComplete": function (oSettings, json) {
adminRoles.fnFilterOnReturn();
},
ajax: ...
您的偏移量为6,因此返回记录号7。
如果删除这两行:
//For your example: ?page=5
$page_page = 2;
$page = ! empty( $_GET['page'] ) ? (int) $_GET['page'] : 1; // 5
$total = count($apps); // 7
$totalPages = ceil( $total/ $page_page ); // 4
$page = max($page, 1); // 5 (correct)
$page = min($page, $totalPages); // 4 (incorrect)
$offset = ($page - 1) * $page_page; // 6 (incorrect)
其余的逻辑将起作用。
$page = max($page, 1);
$page = min($page, $totalPages);
如果您需要此分页循环的值,请将其重命名或将其移至$ offset以下。