[英]Pagination using Redis and PHP
我正在一个项目中,我需要对获取的记录进行分页。 谁能帮助我高效地完成工作。
请指导我哪种方法最好:1)在页面加载时获取完整的记录并将其发送到前端,并在请求新页面时显示记录。 (在这里,我觉得这会浪费很多时间,并使应用程序对用户造成沉重负担)
2)ON页面加载从服务器获取记录,并创建一个虚拟表或说一个数组来存储获取的详细信息。 现在将响应从此数组发送到请求的页面(仅在第一次加载页面时会调用服务器,而其余的所有页面点击都将从页面加载结果创建的虚拟表中获取)我很担心如何维护虚拟表或数组,因为系统是基于Web的,并且多个用户同时进行交互。
请帮助我以正确的方式进行。 如果您有更好的方法,那么请告诉我。
先感谢您。
加载完整记录不是一个好习惯。 您可以通过以下方式使用分页
在前端处理发送给控制器的请求。
var data = {'offset': offset};
var url = "http://localhost/project/controller/listData";
$http.post(url, $.param(data), config).then(function (data) {
if (data.data.Code == '200') { // if query returned some data
for (var i in data.data.result) {
$scope.dataSet.push(data.data.result[i]);
}
offset += 5;
}
}, function (error) {
console.log("error");
});
从数据库中获取数据时,在控制器方法中使用限制和偏移量
public function listData()
{
$offset = $this->input->post('offset');
$query = $this->db->get('dataTable', 5, $offset);
if ($query->num_rows() > 0) {
$result = $query->result_array();
$response = array(
'Code' => '200',
'Message' => 'Success!!!',
'result' => $result
);
echo json_encode($response);
} else {
$response = array(
'Code' => '203',
'Message' => 'no data fetched!!',
);
echo json_encode($response);
}
}
PS我的建议是使用无限滚动进行分页,有很多示例可以尝试一些。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.