Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: разработка для Web > Постраничный вывод в cgi |
Автор: Guran 12.11.2011, 04:42 | ||
Здравствуйте. Возникла такая проблема: есть cgi скрипт, исполняющий роль фильтра. Он подключается к выбранной бд и выводит на экран все соответствующее параметрам. Проблема в том что под запрос могут попадать несколько тысяч строк. Догадался в запросах использовать лимиты, но не знаю как вставить кнопки для динамического изменения переменной, за этот лимит отвечающую.
|
Автор: tishaishii 13.11.2011, 18:47 | ||
|
Автор: infarch 14.11.2011, 11:00 |
Ух ты, красиво у вас получилось... А можете пояснить, для чего нужен "плюс" в начале некоторых строк? Типа вот этого: "+map $self->{cgi}->param($_), @_;" |
Автор: Ramirez 15.11.2011, 18:26 |
tishaishii, ээээ, я видимо торможу, но где тут постраичный вывод? |
Автор: Azudim 3.12.2011, 11:17 |
В общем случае задачу "пейджинга" я бы решил так: 1. Установить лимит строк в выдаче на одну страницу "по умолчанию" (к примеру 25 строк, зависит от дизайна интерфейса) 2. Узнать общее количество строк в выдаче, как если бы мы не вводили лимиты (SELECT COUNT) 3. Рассчитываем количество возможных страниц при нашем лимите ( ВСЕ ВОЗМОЖНЫЕ / НАШ ЛИМИТ ) 4. Проектируем область вывода меню управления страницами на "страничке". Если к примеру у нас блок 250px под управление страницами, а вывести с нашим запросом можно 900 страниц, то удобнее перемещаться не по 1 странице далее, а по 10 или 50. т.е. выглядит такое меню примерно так [<<][<][1] [2] [3] [_4_][5][6][10][20][50][100][>][>>] в скобках что вам нужно - или ссылки с передачей номера страницы через url, типа /article?page=5 или запуск JS скрипта. Вариант с JS скриптом предпочтительнее по следующим соображениям: а) параметров может передаваться очень много: номер страницы, количество строк в выводе, фильтры поиска и т.п. и в URL просто не поместятся все. б) размер HTML документа с длинными ссылками увеличится в) параметры в url доедут до следующей страницы, будет некрасиво смотреться адресная строка Как может работать JS скрипт - элементарно! Создаем в HTML теле страницы форму, складываем для нужное количество инпутов вида <input type="hidden" value=""> и скриптом сабмитим форму, предворительно проставив нужные параметры. Важно - эти параметры на следующей странице передать из CGI в value="" в инпутах. 5. Генерируем в скрипте последовательность кнопок управления страницами Получаем: первый проход - лимиты установлены по умолчанию, сгенерировано меню страниц, по клику на элемент меню передаются параметры на следующий проход page=X второй проход, если указан page и rows (кол. строк на страницу) передаем эти параметры в SQL запрос |