![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Guran |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 4.10.2011 Репутация: нет Всего: нет |
Здравствуйте. Возникла такая проблема: есть cgi скрипт, исполняющий роль фильтра. Он подключается к выбранной бд и выводит на экран все соответствующее параметрам. Проблема в том что под запрос могут попадать несколько тысяч строк. Догадался в запросах использовать лимиты, но не знаю как вставить кнопки для динамического изменения переменной, за этот лимит отвечающую.
Это сообщение отредактировал(а) Guran - 12.11.2011, 04:45 |
|||
|
||||
tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: нет Всего: 8 |
|
|||
|
||||
infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: нет Всего: 1 |
Ух ты, красиво у вас получилось... А можете пояснить, для чего нужен "плюс" в начале некоторых строк? Типа вот этого: "+map $self->{cgi}->param($_), @_;"
|
|||
|
||||
Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: 1 Всего: 5 |
tishaishii, ээээ, я видимо торможу, но где тут постраичный вывод?
|
|||
|
||||
Azudim |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.12.2011 Репутация: нет Всего: нет |
В общем случае задачу "пейджинга" я бы решил так:
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 запрос |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |