簡體   English   中英

使用Redis和PHP進行分頁

[英]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");

        });

的PHP

從數據庫中獲取數據時,在控制器方法中使用限制和偏移量

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM