Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Класс для постраничной навигации

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
teddy
Отправлено: 06 Февраля, 2014 - 20:52:36
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




[Этот класс устарел, новый здесь:
http://forum.php.su/topic.php?fo...ostid=1415290936 ]

Привет. Думаю тема достаточно актуальная и хорошо всегда иметь под рукой пагинатор, что бы не приходилось писать его каждый раз. Накатал класс, кому нужно - пользуйтесь. Кому не нравится класс - просьба писать что именно не нравится, адекватные и полезные замечания будут учтены и возможно реализованы.

Код класса. Отформатирован хреново ввиду того, что не вмещается нормально в блок. В файле с кодом, который я приложил к теме, таких проблем нет.
Спойлер (Отобразить)

Данный класс может работать в двух режимах, в стандартном и в режиме с фильтром. Отличие режимов будет описано ниже.

Пример использования в стандартном режиме. Инициализация параметров.
PHP:
скопировать код в буфер обмена
  1.  
  2. $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
  3. $pagination = new Pagination(5, $page, 'items', array('name', 'description'));

Значение параметров
1. Количество записей, выводимых на одну страницу.
2. $_GET параметр, по которому осуществляется выборка(номер страницы).
3. Таблица, из которой нужно забрать записи
4. Массив, в который нужно передать нужные поля для выборки.

PHP:
скопировать код в буфер обмена
  1.  
  2. $content = $pagination->getPageContent();
  3. if($content){
  4.     var_dump($content);//здесь лежат записи
  5.     var_dump($pagination->showPages('http://site.ru/pagination.php?page='));//а здесь лежит навигация(кнопочки вперед, назад, 123). В скобках указываем ссылку, по которой должен работать пагинатор.
  6. }else{
  7.     //страница не найдена
  8. }
  9.  

Пример использования в режиме с фильтром. Инициализация параметров.
PHP:
скопировать код в буфер обмена
  1.  
  2. $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
  3. $pagi = new Pagination(10, $page, 'items', array('item', 'description'), Pagination::FILTER_MODE, "WHERE `price` > :price", array(':price' => $price));
  4.  

Первые 4 параметра такие же как и в первом примере.
5. Параметр это константа FILTER_MODE которая сообщает классу, что запрос будет будет содержать фильтр(лимит указывать не нужно).
6. Собственно сам фильр, извращайтесь там как угодно, сортируйте, группируйте и т.д
Фактически если следовать данному примеру, то фильтр придется в эту часть запроса:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `item`, `description` FROM `items` тут все что вы напишите в фильтр LIMIT генерируется сам

7. Массив, который передается для значений параметров, которые были переданы в запрос.

Остальное все то же самое, как в вышеуказанном примере. Страницы и контент получается стандартным образом.

Примечание:
Классу безразлично ЧПУ у Вас или нет. Если ЧПУ, тогда в метод showPages передайте соответствующую ссылку.

Так же хочу заметить, класс использует PDO для работы с БД. Для тех кто пользуется mysql или mysqli нужно будет изменить пару строчек, но это я оставлю на Вас Улыбка

Вроде бы всё.
Скачать файл: Pagination.php
Скачан раз: 68

(Отредактировано автором: 06 Ноября, 2014 - 18:27:45)

 
 Top
Ch_chov
Отправлено: 07 Февраля, 2014 - 06:28:13
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Зачем же каждый раз при создании пагинации устанавливать новое соединение с базой?
 
 Top
teddy
Отправлено: 07 Февраля, 2014 - 15:11:23
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Ch_chov
Банальное соединение было указано для того что бы было наглядно "Что и откуда берется". А так конечно же каждый может указать его по своему, это никак не нарушает принципы работы класса

(Отредактировано автором: 07 Февраля, 2014 - 15:11:51)

 
 Top
mustafa007
Отправлено: 05 Сентября, 2014 - 13:42:22
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Сент. 2014  


Помог: 0 раз(а)




Пользуйте на здоровье Улыбка

Спойлер (Отобразить)

(Отредактировано автором: 05 Сентября, 2014 - 13:57:33)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB