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 :: Постраничная навигация [2]

 PHP.SU

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


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

> Без описания
DeepVarvar Супермодератор
Отправлено: 24 Июня, 2013 - 07:13:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




LIME пишет:
пагинатор должон только ссылочки выводить
а список отдельно
Ты правильно разглядел - там целый "комбайн".
Вот пример живого использования при выводе списка созданных меню в админке:

PHP:
скопировать код в буфер обмена
  1. $sourceQuery = "
  2.  SELECT id, name FROM menu
  3.  ORDER BY id ASC, name ASC
  4. ";
  5.  
  6. $paginator = new paginator($sourceQuery);
  7.  
  8. $result =
  9.  
  10.   $paginator->setCurrentPage(request::getCurrentPage())
  11.     ->setItemsPerPage(20)
  12.     ->setSliceSizeByPages(20)
  13.     ->getResult();
  14.  
  15. // добавляем результаты во вьюху в удобоваримом ей виде
  16. // и там выводим уже как хотим,
  17. // и элементы для текущей страницы
  18. // и сами ссылки страничек пагинации
  19. view::assign("menulist", $result['items']);
  20. view::assign("pages", $result['pages']);


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

LIME пишет:
а зачем там фалсовые курренты в массиве? может их убрать?
Только для отображения - проверять как раскрасить текущую ссылку на страницу.
Пусть будут - есть они не просят.

LIME пишет:
и цепочку сетов я бы заменил параметрами конструктора
ну те что полюбасные
Полюбасным является только запрос без лимитов, который и передается в конструктор.
Остальные не обязательны.
 
 Top
teddy
Отправлено: 24 Июня, 2013 - 12:35:27
Post Id


Участник


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


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




LIME
Ну да, ну да... Тут я думаю нет единого решения. Все опять же от вкуса зависит. Но в идеале то да, нужно предусматривать всё, если нам нужен мощный пагинатор... Но опять же, учитывая возможноси PHP я думаю что можно решить более чистым кодом чем в примерах гугла, тут всё уже от креативности писаки зависит я думаю...

DeepVarvar пишет:
Повторюсь

Честно говоря не очень понял... 1. Класс paginator это встроенный в PHP класс? А то его описания я по ссылке не нашел. 2. Или это просто "идея" описана ? 3. Если встроен, то с какой версии PHP? У меня не находит пых такой класс... Версия 5.3
 
 Top
vanicon
Отправлено: 24 Июня, 2013 - 12:43:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


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




teddy
У навигации есть определенный функционал, который в дальнейшим уже вряд ли будет меняться, один раз написать нормальный класс/функцию навигации, и использовать его уже везде где надо...
teddy пишет:
Честно говоря не очень понял... 1. Класс paginator это встроенный в PHP класс? А то его описания я по ссылке не нашел. 2. Или это просто "идея" описана ? 3. Если встроен, то с какой версии PHP? У меня не находит пых такой класс... Версия 5.3

Нет, это класс DeepVarvar'a, который он написал и использует в свой cms, смотри его подпись...


-----
Так было, так есть и так будет
 
 Top
LIME
Отправлено: 24 Июня, 2013 - 13:10:43
Post Id


Активный участник


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


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




DeepVarvar пишет:
Только для отображения - проверять как раскрасить текущую ссылку на страницу
так это понятно))
просто можно все фалсы поубирать и оставить только один флажок
и проверять потом на isset
избыточный слегка массив выходит
DeepVarvar пишет:
Остальные не обязательны.
наверное потому что где устанавливаются по умолчанию
дык и параметры в конструкторе можно сделать дефолтные
просто вызов компактнее получится...и идеалогически как-то более
 
 Top
teddy
Отправлено: 24 Июня, 2013 - 13:20:52
Post Id


Участник


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


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




vanicon пишет:
У навигации есть определенный функционал, который в дальнейшим уже вряд ли будет меняться, один раз написать нормальный класс/функцию навигации, и использовать его уже везде где надо...

Согласен ) Если честно, исходя и темы данного топика, я написал этот мини скрипт с целью освоения принципа работы постраничной навигации. Ведь до сегодняшнего дня я не очень его понимал... Это была своего рода тренировка для меня....

vanicon пишет:
Нет, это класс DeepVarvar'a, который он написал и использует в свой cms, смотри его подпись...

Теперь понятно, спасибо )

DeepVarvar
А можно посмотреть исходники данного класса?
 
 Top
LIME
Отправлено: 24 Июня, 2013 - 13:30:37
Post Id


Активный участник


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


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




DeepVarvar пишет:
там целый "комбайн"
а если нужен список но без пагинации?
другой класс берем?
(Добавление)
или нет...просто не передаем результат в вьюху?
(Добавление)
вот например
я обычно модуль списка и карточки товара объеденяю
тоесть в конструкторе вызываю либо Class::showList либо Class::showOne в зависимости от переданного или нет id в гет
и метку пагинатора вставляю только в шаблон списка если надо
передавая ему только имя таблицы

(Отредактировано автором: 24 Июня, 2013 - 13:51:06)

 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Июня, 2013 - 22:59:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




teddy пишет:
А можно посмотреть исходники данного класса?

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


LIME пишет:
а если нужен список но без пагинации?
другой класс берем?
(Добавление)
или нет...просто не передаем результат в вьюху?
(Добавление)
вот например
я обычно модуль списка и карточки товара объеденяю
тоесть в конструкторе вызываю либо Class::showList либо Class::showOne в зависимости от переданного или нет id в гет
и метку пагинатора вставляю только в шаблон списка если надо
передавая ему только имя таблицы

Если нужен список без пагинации, то не передаем список во вьюху.
Ну ты объединяешь, а некоторые вообще разные контроллеры лепят на это дело.
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB