Постраничный вывод.

Вопросы об установке, настройке и работе самого фреймворка

Постраничный вывод.

Сообщение Voice 30 июл 2008, 12:36

Здравствуйте.

Сейчас пишу свой первый проект на данном фреймворке, -- новостной портал.
В проекте в основном вывод данных в таблицах, ну и как всегда нужен постраничный вывод (ну практически во всех проектах так). А поскольку в таблице еще и сортировка должна быть и фильтр... В общем параметров много. Раньше для этого делал ссылки и соответственно параметры передавались гет-методом.

Хотел бы услышать как Вы это реализовываете с помощью CI. Поделитесь опытом.
Voice
 
Сообщения: 4
Зарегистрирован: 30 июл 2008, 12:24

Re: Постраничный вывод.

Сообщение johnluxor 30 июл 2008, 12:47

Здесь вместо GET метода используйте URL сегменты.

Код: Выделить всё
  
...
// Количество статей на страницу
$per_page=5;

// выборка списка статей на данной странице, с помощью функции из модели
           
$data['list']=$this->mod_pages->get_pages_on_page($page$per_page);
        
// получение общего количества статей
            
$num_page=$this->db->count_all('_pages');

        
// Создание пагинации - настройка
            
$config['cur_tag_open'] = '<b class="act_page">';
            
$config['cur_tag_close'] = '</b>';
            
            
$config['base_url'] = base_url().'admin/pages/';
            
$config['total_rows'] = $num_page;
            
$config['per_page'] = $per_page;
            
$config['last_link'] = 'Последняя';

        
// инициализация пагинации
            
$this->pagination->initialize($config);
          
// Создание ссылок на страницу и сохранение результата в массив
            
$data['pagination']=$this->pagination->create_links();

           
$this->load->view('cp_pages/list_table'$data)
....

 



настройки пагинации можно вынести в отдельный файл
Аватара пользователя
johnluxor
 
Сообщения: 81
Зарегистрирован: 03 фев 2009, 17:23
Откуда: Praha

Re: Постраничный вывод.

Сообщение Voice 30 июл 2008, 14:36

Это то понятно. Я не использую средства КИ для генерации HTML. Есть причины.
Voice
 
Сообщения: 4
Зарегистрирован: 30 июл 2008, 12:24

Re: Постраничный вывод.

Сообщение Антон Исайкин 04 авг 2008, 19:53

Voice писал(а):Это то понятно. Я не использую средства КИ для генерации HTML. Есть причины.

Каковы же они?
Аватара пользователя
Антон Исайкин
Администратор
 
Сообщения: 127
Зарегистрирован: 16 апр 2008, 19:11
Откуда: Санкт-Петербург

Re: Постраничный вывод.

Сообщение Choo 29 дек 2008, 22:26

Прошу прощения, что поднимаю старую тему, но есть такой вопрос, соответствующий ей. Делаю аналогичную пагинацию, но для панели администрирования. Там нужно предусмотреть возможность поиска по базе. То есть как вывод всех подряд записей из БД, так и подходящих по какому-то параметру. Так вот, когда такой цели не стояло - для посчета использовал count_all(). Но для поиска с условием она не подходит. Правильно ли будет использовать конструкцию с count_all_results() в случае, если есть критерий поиска?
Choo
 
Сообщения: 78
Зарегистрирован: 18 фев 2009, 23:01

Re: Постраничный вывод.

Сообщение БОШ 29 дек 2008, 23:04

Я использую $query->num_rows() http://code-igniter.ru/user_guide/database/results.html
Just Do It
Аватара пользователя
БОШ
 
Сообщения: 111
Зарегистрирован: 02 фев 2009, 21:36
Откуда: г. Кубинка

Re: Постраничный вывод.

Сообщение Ladygin 30 дек 2008, 07:24

Choo
Правильно ли будет использовать конструкцию с count_all_results() в случае, если есть критерий поиска?

Правильно.

БОШ
Я использую $query->num_rows() http://code-igniter.ru/user_guide/database/results.html

Такая функция в данном случае не подходит, т.к. она возвращает количество полученных строк, а не сколько их всего.
Аватара пользователя
Ladygin
 
Сообщения: 72
Зарегистрирован: 30 май 2008, 06:13
Откуда: Псков

Re: Постраничный вывод.

Сообщение БОШ 30 дек 2008, 18:41

Ladygin
Спасибо за замечание
Just Do It
Аватара пользователя
БОШ
 
Сообщения: 111
Зарегистрирован: 02 фев 2009, 21:36
Откуда: г. Кубинка

Re: Постраничный вывод.

Сообщение Malchish 03 мар 2010, 21:38

Подниму еще раз тему :oops:
Делаю каталог (разделов два десятка), у меня каждый раздел имеет свои тематические параметры. Параметры разного типа и их число различно:
Недвижимость:
- кол-во комнат
- площадь
- этаж
- и т.п.

Земельные участки:
- площадь
- удаленность

Необходимо реализовать фильтр, который состоит из тематических параметров.

У меня URL разделов выглядят - имя раздела, текущая страница (пагинация):
http://sitename.com/kvartiry_komnaty/10/
http://sitename.com/zemelnye_uchastki/15/

Как быть, если добавить еще параметры для фильтрации, если не использовать GET-метод?
Все было бы просто, если нужно было бы передать параметры один раз, а тут же при "перелистывании" параметры передавать нужно повторно.
Передавать POST-методом и хранить параметры в сессии? А при смене раздела чистить значения для фильтра?
Посоветуйте, как это правильно реализовать
Malchish
 
Сообщения: 7
Зарегистрирован: 16 фев 2009, 11:18

Re: Постраничный вывод.

Сообщение БОШ 04 мар 2010, 00:47

Решал подобную задачу следующим образом
Пусть у нас есть адрес http://example.com/search/result/room/5 ... r/3/page/3

Получаем ассоциативный массив входных данных.

Код: Выделить всё
$a = $this->uri->uri_to_assoc(3); 


Затем определяем текущую страницу, она может быть не задана.

Код: Выделить всё
if (empty($a['page']))
    $page = 1;
else
{
    $page = intval($a['page']);
    unset ($a['page']);
    if ($page < 1)
        $page = 1;
}
 


И устанавливаем параметры
Код: Выделить всё
$config['base_url'] = site_url('search/result/'.$this->uri->assoc_to_uri($a)."/page");
$config['uri_segment'] = 2 * count($a) + 4; 


Примерно так
номер сегмента вычеслятся как сумма параметров фильтра (ключ -> значение) * 2 + 3 сегмента (search, result, page) + 1
Just Do It
Аватара пользователя
БОШ
 
Сообщения: 111
Зарегистрирован: 02 фев 2009, 21:36
Откуда: г. Кубинка

Re: Постраничный вывод.

Сообщение Malchish 06 мар 2010, 13:45

БОШ писал(а):Решал подобную задачу следующим образом
...


Спасибо, попробую также ;)
Malchish
 
Сообщения: 7
Зарегистрирован: 16 фев 2009, 11:18


Вернуться в Общие вопросы по фреймворку

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0