【发布时间】:2016-07-23 05:19:34
【问题描述】:
我正在开发一个可能有很多用户的 php 网络项目。从管理的角度来看,我试图显示一个包含每个用户信息的表,并且看到用户表可能会变得非常大,我想使用分页。
-
在后端,我创建了一个服务,它需要一个限制和一个偏移参数,用于在数据库中查询适当范围内的记录。该服务返回表中的记录总数,以及与查询匹配的记录
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; } -
在前端,理想情况下,我希望在表格底部显示导航,带有典型的上一个、下一个按钮,以及一些允许用户快速导航到所需的数字page 如果显示的页码。到目前为止,这就是我对 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代码来实现分页,然后可以将其传递给视图并显示。
我以前从未这样做过,但从我目前所做的研究来看,这似乎是处理它的好方法。任何关于此的指导、建议或任何真正的东西都将不胜感激。
【问题讨论】:
-
给我们看一些代码。
标签: php html mysql pagination