[英]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.