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 :: Фильтр, постраничная навигация
Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011 Откуда: Ростов-на-Дону
Помог: 21 раз(а)
Возник такой вопрос делаю постраничную навигацию в магазине при применении фильтра параметры передаются GET
например
site.ru/?param1=10¶m2=10¶m3=10
параметров неизвестное количество
после прохода фильтра страниц может быть несколько нужно по ним перемещаться следовательно в навигации должны быть ссылки типа:
site.ru/?param1=10¶m2=10¶m3=10&page=2
site.ru/?param1=10¶m2=10¶m3=10&page=3
site.ru/?param1=10¶m2=10¶m3=10&page=4
вот интересует вопрос как их формировать так если взять
$_SERVER['REQUEST_URI'] то я получу страничку с переменной page и как ее менять только разбирать URL или есть другие способы?
esterio
Отправлено: 06 Февраля, 2014 - 15:53:28
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Первый параметр это сколько записей выводить на одну страницу
Второй параметр это цифра которая берется из $_GET параметра для переключения страницы. В конечном счете без разницы ЧПУ у Вас или нет, работать будет по всякому.
Третий параметр это название таблицы из которой нужно забрать записи
Четвертый параметр принимается в виде массива, куда нужно передать название полей из таблицы, которые нужно выбрать.
Когда все эти настройки переданы, можно забирать контент и страницы.
В метод showPages нужно передать ссылку, по которой должна работать постраничная навигация. В данном примере ссылка без ЧПУ. А если у Вас ЧПУ, тогда передаем ссылку так http://site[dot]ru/pagination/page/
После того как получили массив данных и страницы, выводите где нужно.
Да, конечно же в конструкторе нужно указать свое подключение к БД, свой логин и пароль и т.д. Если синглтон то цепляйте инстанс. Вообщем без разницы.
Если найдете какие то ошибки, прошу мне о них сообщить. Если все норм, то наверное опубликую класс в пользовательских функциях
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
teddy как же быть, если нужна выборка с условием?
----- То что программа работает, не означает что она написана правильно!
teddy
Отправлено: 06 Февраля, 2014 - 18:26:09
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
KingStar
Можно создать свойство, которое будет приклеиваться к запросу(заполнить его можно как угодно, хоть через конструктор, хоть через метод, хоть через публичное свойство), думаю Вы не сомневаетесь, что это дело пяти минут
KingStar
Отправлено: 06 Февраля, 2014 - 18:36:56
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
teddy можно как говорится "Машку за ляжку"
через конструктор, или еще как ты там советуешь получится пагинация привязана к конкретному условию, и смысл тогда всех передаваемых полей в талице, и т.п. если таким же образом по твоей идее можно в конструкторе, методе ...
в общем сыровато... (Добавление)
а еще я хочу сортировку свою указывать и по какому полю сортировать
----- То что программа работает, не означает что она написана правильно!
teddy
Отправлено: 06 Февраля, 2014 - 18:43:29
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
KingStar
Почему к конкретному условию? Можно сделать мод-ы в которых будет работать пагинатор, в конструктор передавать этот мод, и этот мод будет свитчиться уже внутри класса, и в зависимости от мода мы будем попадать в нужный кейс где будут определяться различные условия выборки. Пока ничего лучше придумать не могу, от советов по усовершенствованию не откажусь )
KingStar
Отправлено: 06 Февраля, 2014 - 18:48:48
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
и вообще, это уже не пагинация, а уже делающий конретные действия с конкретной таблицей класс
пагинации ты должен скармливать результат выборки, объект, массив, что угодно, а она уже дожна выдать кнопки, ссылки, а то получается что ты то выборку делаешь, выводишь, затем снова выборка, пагинация, так что ли??? если пустой результат вернет, что покажет??? а если меньше указанных в первом параметре? а если на последнюю хочу страницу? (Добавление)
KingStar пишет:
а еще я хочу сортировку свою указывать и по какому полю сортировать Хорошо
(Добавление)
вот блин я противный раскреттиковал
----- То что программа работает, не означает что она написана правильно!
teddy
Отправлено: 06 Февраля, 2014 - 19:04:08
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
KingStar пишет:
и вообще, это уже не пагинация, а уже делающий конретные действия с конкретной таблицей класс
Как я уже говорил, условия можно настроить по модам, название таблицы определяется в конструкторе. Если погуглить, то почти все примеры пейджера построены на mysql_query и LIMIT, я думаю класс вполне подойдет для многих стандартных задач, никто не говорил, что это лучший класс на свете. Более того, я не зря сказал, что интересует оценка форумчан, заинтересован в улучшении.
KingStar пишет:
а еще я хочу сортировку свою указывать и по какому полю сортировать Хорошо
При необходимости можно сделать много кейсов с различными модами, никто не запрещает...
Ещё есть вариант передавать запрос при создании объекта и в конце прицеплять к нему лимит
Если честно, не видел пейджера куда закидывают объект. Обычно это получение из БД некоторых данных и отрисовка нужной навигации, что собственно я и сделал.
По поводу того что найдена ли запись или нет, то у меня возвращается false, если записи не найдены. Отследить то что записи не найдены не составит проблем, один if все решит.
В целом, благодарю за замечания, часть будет реализована. Если есть ещё что сказать, то я обязательно приму во внимание. (Добавление)
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
teddy, а че для меня то сразу я лишь подтолкнул тебя работать дальше, развивать, делать более гибким, может кому-то и пригодится, (Добавление)
да и по моему тема уже заюзана, велосипедов хватает, для общего развития если только
----- То что программа работает, не означает что она написана правильно!
teddy
Отправлено: 06 Февраля, 2014 - 23:44:36
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
KingStar пишет:
а че для меня то сразу
Шутка Я принял во внимание многое) теперь можно и фильтр ставить и даже параметры свои в зарос передавать... По поводу великов - Здесь часто можно встретить людей с проблемами пейджера, вот пусть пользуются если надо... фактически для использования нужно написать всего 2-3 строчки кода... Ну и мне критика не помешала) Если есть кому что добавить - говорите, думаю сделаю )
Последний вариант на данный момент лежит в топике(ссылка выше).. обновил сейчас
3d_killer
Отправлено: 07 Февраля, 2014 - 08:53:10
Участник
Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011 Откуда: Ростов-на-Дону
Помог: 21 раз(а)
навигатор сам я написал все работает отлично пока дело не доходит до фильтра когда переменных GET неизвестное количество и их нужно сохранить поменяв при этом только $_GET['page']
3d_killer
Отправлено: 07 Февраля, 2014 - 13:00:37
Участник
Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011 Откуда: Ростов-на-Дону
Помог: 21 раз(а)
esterio Благодарб натолкнули на мысль написал простенькую функцию которая делает то что мне надо. Примерчик
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.