Я работаю над веб-проектом в php, который потенциально может иметь много пользователей. С административной точки зрения, я пытаюсь отобразить таблицу, содержащую информацию о каждом пользователе, и, увидев, что таблица пользователей может расти чрезвычайно велика, я хотел бы использовать разбиение на страницы.Как достичь pagination 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; }
На веб-интерфейсе, что я хотел бы получить в идеале есть, есть навигация отображается в нижней части таблицы , с типичными предыдущими, следующими кнопками и, кроме того, несколькими номерами, которые позволяют пользователю быстро перейти на нужную страницу, если отображается номер страницы. Это то, что я имею до сих пор для UserController, без разбивки на страницы.
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-код для достижения пагинацию, что в свою очередь может затем быть передан в представление и отображается.
Я никогда не делал этого раньше, но из исследования, которое я сделал до сих пор, похоже, что это может быть хорошим способом приблизиться к нему. Любое руководство, предложения или что-либо вообще на самом деле, в отношении этого было бы весьма полезно.
google: http://code.tutsplus.com/tutorials/how-to-paginate-data-with-php--net-2928 –
Покажите нам некоторый код. – sensation