Приветствую. Сегодня у нас заключительная мини-статья о совершенном способе вывода различных списков. Сегодня мы разберем такую важную часть как сортировка и менее важную, такую как регулирование количество записей на странице. Для реализации всего этого нам понадобятся те функции и доработки, которые мы успели составить в предыдущих статьях. Сегодня лишь заключительная часть.
Сортировка.
Было бы очень не плохо добавить возможность пользователю настроить порядок вывода записей. Ключевая функция, сохраняющая все переменные у нас есть. К ней добавляются еще 2 – $sort и $order. Их также можно сохранить в куках и передавать через GET.
Как известно – они хорошо ложатся на язык запросов. Наши запросы теперь будут выглядеть так:
SELECT * FROM TABLE WHERE ".implode(' AND ',$where) ORDER BY $sort,$order LIMIT ".($_GET[‘page’]* $count_on_page).", ".$count_on_page
SELECT count(*) CNT FROM TABLE WHERE ".implode(' AND ',$where);
При том нужно проверить эти переменные на возможные значения, а также проставить значения по умолчанию. При острой необходимости можно докрутить запрос на сортировку по множеству параметров, думаю, Вы разберетесь с этим сами при необходимости.
Не забываем передавать переменные через нашу волшебную функцию
get_link(array(‘sort’=>’id’,’order’=>’asc’));
get_link(array(‘sort’=>’id’,’order’=>’desc’));
Сортировку мы можем разместить в виде стрелочек после каждого пункта, можем вынести ее в отдельное поле сбоку. Все – на усмотрение проекта.
Количество записей на странице.
Вещь действительно полезная и дополняющая все вышеизложенное приятными возможностями. Не каждому хочется постоянно щелкать по кнопкам постраничника, удобнее показать 100 записей вместо 10. Хорошо
Мы уже использовали данный параметр $count_on_page. Остается его лишь подвязать к ссылке. Конечно же, через нашу волшебную функцию. Если мы не хотим, чтобы пользователю каждый раз приходилось подбирать число строк на странице – можем завязать ее на куки. Единственное – когда пользователь захочет указать ссылку на выборку – он не сможет передать ее правильно без принудительной передаче GETпараметра count_on_page.
get_link(array(‘count_on_page’=>’10’));
В остальном – все что надо – мы разобрали. Теперь у пользователя есть большая возможность самостоятельно проводить данные изменения, что повышает отношение к вашему ресурсу. Много ли ресурсов могут похвастаться таким механизмом? И дорого ли им обходится такой механизм?
Здесь все просто и прозрачно. Любые изменения вводятся легко и просто.
В заключении
Мы не затронули в данном разделе возможности группировки. Сразу отпишусь, что групповые функции относятся скорее к возможности строить отчеты. Просто подключить группировку не получится и не нужно в рамках задачи.
Данный вид списка в той или иной степени реализован в Фреймворке EXT-JS, только там все достаточно непросто. Чтобы внедрить не предусмотренный фильтр на несколько строк – приходится крепко задуматься. Мы же сосредотачиваемся на простых и универсальных решениях.
Возможно, в дальнейшем мы также рассмотрим – как универсально и легко получать нужное нам содержимое без перегрузки всей страницы. Так уже делают яндекс маркет и некоторые дорогие интернет магазины на базе битрикс. Ведь – мы просто сменили фильтр/сортировку/перелистнули страничку. Нам не нужно теперь обновлять всю страницу целиком… Рассмотрим это когда-нибудь потом