2016-04-03 109 views
1

我正在開發一個php項目,可能會有很多用戶。從管理的角度來看,我試圖顯示一個包含每個用戶信息的表格,並且看到用戶表格可能變得非常大,我想使用分頁。如何實現分頁html php mysql

  • 在後端,我創建了一個希望限制,將用於在適當的範圍內查詢記錄數據庫中的偏移參數的服務。該服務返回表中的總記錄數,隨着記錄與查詢匹配的

    public static function getUsersInfo($limit = 50, $offset=1) 
    { 
        $users_count = Users::count(
          array(
           "column" => "user_id" 
          ) 
         ); 
    
        $users_info = array(); 
        $users = Users::query() 
         ->order('created_at') 
         ->limit($limit, $offset) 
         ->execute() 
         ->toArray(); 
    
        foreach ($users as $index => $user) { 
         $users_info[$index]['user_id'] = $user['user_id']; 
         $users_info[$index]['name'] = $user['first_name'] . " " . $user['last_name']; 
         $users_info[$index] ['phone'] = $user['phone']; 
         $users_info[$index] ['profile_image_url'] = $user['profile_image_url']; 
        } 
    
        $results = array(
         'users_count' => $users_count, 
         'users_info' => $users_info 
        ); 
        return !empty($results) ? $results : false; 
    } 
    
  • 在前端,我想實現理想情況下,在表的底部都顯示的導航,帶有典型的上一個,下一個按鈕以及一些數字,用戶可以在顯示頁碼時快速導航到所需的頁面。這是我迄今爲止的UsersController,沒有分頁。

    class UsersController extends ControllerBase 
    { 
        public function indexAction() 
        { 
         $usersObject = new Users(); 
         $data = $usersObject->getUsers(); 
    
         if ($data['status'] == Constants::SUCCESS) { 
          $users = $data['data']['users_info']; 
          $users_count = $data['data']['users_count'];  
          $this->view->setVar('users', $users); 
         } 
    
         echo $this->view->render('admin/users');  
        } 
    
        public function getUsersAction() 
        { 
         echo Pagination::create_links(15, 5, 1); 
        } 
    } 
    

我沒有任何工作分頁,但我在想一個好辦法去將創建一個Pagination庫與create_links函數,它的

  • total_count的記錄,所以我知道預計有多少頁面
  • limit所以我知道要收集多少條記錄
  • cur_page所以我知道從何處開始

所以,當調用該函數使用正確的參數檢索,它會生成HTML代碼來實現分頁,而這又可以被傳遞到視圖和顯示。

我從來沒有這樣做過,但從迄今爲止所做的研究來看,似乎這可能是一種很好的方法來處理它。任何指導,建議,或任何真的,對此將不勝感激。

+0

google:http://code.tutsplus.com/tutorials/how-to-paginate-data-with-php--net-2928 – 2016-04-03 19:10:47

+0

向我們展示一些代碼。 – sensation

回答

0

它看起來像你使用一些定製的MVC-ISH框架。雖然它沒有完全回答你的問題,我有幾點:

  1. 如果你正在看很多的用戶,分頁是你的問題最少。您需要考慮數據庫如何編制索引,結果如何返回等等。
  2. 如果不理解您正在使用的底層數據庫抽象層/驅動程序,很難確定您的->limit($limit, $offset)行是否可以正常工作。偏移量應該默認爲0,但不知道代碼很難說。
  3. 您的第一個方法(return !empty($results) ? $results : false;)中的三元運算符目前是無價值的,因爲它之前的語句將意味着該變量將始終是一個數組。
  4. 避免控制器中的回聲語句。他們應該返回到模板引擎以輸出視圖。
  5. Users類將更好地命名爲User,因爲MVC框架意味着'模型'是一個單一的實體。

雖然它不是一個一般的規則,我已經使用具有零折射率的系統上工作最分頁系統(第1頁是頁0),所以計算的極限範圍很簡單:

$total_records = 1000; 
$max_records = 20; 
$current_page = 0; 

$offset = $max_records * $current_page; 

$sql = "SELECT * FROM foo LIMIT $offset, $max_records";