Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ WEB Разработка ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

FreeBSD and Nix

Общая

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Codeigniter: pagination


Класс Нумерации страниц (Pagination Class)
Класс нумерации страниц CodeIgniter очень прост для использования, и на 100% настраиваемый, принимая динамически переданные параметры или считывая их из хранимой конфигурации.
Если вам не знаком термин «пагинация», это обозначает ссылки, которые позволяют вам переходить от страницы к странице

Пример
Вот простой пример, показывающий вам как создать нумерацию страниц в одной из ваших функций контроллера:

<?php
class Blog extends CI_Controller {

        public function index()
        {
            $this->load->library('pagination');

            $config['base_url'] = 'http://site/index.php/blog/index/';
            $config['total_rows'] = 200;
            $config['per_page'] = 20; 

            $this->pagination->initialize($config); 

            echo $this->pagination->create_links();

        }
        

        
}

base_url Это основной URL к функции контроллера, содержащей нумерацию сраниц. В примере выше он указывает на контроллер Test и его функцию page. Помните, что если вы переписываете ваши URI, вы должны применять другую структуру. 

total_rows Это число представляет суммарное количество строк результата, для которого вы создаете нумерацию страниц. Обычно это число строк, которое возвращает запрос на выборку всех строк из таблицы БД. 

per_page Количество элементов, одновременно отображаемых на странице. В примере выше, вы показываете по 20 элементов. 

Функция create_links() вернет пустую строку, если нумерации страниц нечего показывать.


Настройка нумерации страниц
Далее следует список всех доступных параметров, которые вы можете передать инициализирующей функции для настройки отображения.
$config['uri_segment'] = 3;
Функция нумерации страниц автоматически определяет, какой сегмент вашего URI содержит номер страницы. Если вам нужно что-то другое, вы можете уточнить это.
$config['num_links'] = 2;
Количество "цифровых" ссылок, которое будет отображаться до и после указанного номера страниц. Например, число 2 означает, что нужно поместить по две ссылки до и после, как в примере в самом верху этой страницы.
$config['use_page_numbers'] = TRUE;
По умолчанию сегменты URI используют стартовый индекс для элементов, для которых вы делаете нумерацию страниц. Если вы предпочитаете показывать актуальный номер страницы, установите этот параметр в TRUE.
$config['page_query_string'] = TRUE;
Добавление закрывающей верстки
Если вы хотите обернуть всю нумерацию страниц в некоторую верстку, вы можете сделать это двумя параметрами:
$config['full_tag_open'] = '<p>';
Открывающий тег, располагающийся слева от результата.
$config['full_tag_close'] = '</p>';
Закрывающий тег, располагающийся справа от результата.
Настройка первой ссылки
$config['first_link'] = 'Первая';
Текст, который должен отображаться в ссылке «Первая» слева. Если вы не хотите, чтобы эта ссылка отображалась, установите значение параметра в FALSE.
$config['first_tag_open'] = '<div>';
Открывающий тег для ссылки «Первая» .
$config['first_tag_close'] = '</div>';
Закрывающий тег для ссылки «Первая» .
Настройка последней ссылки
$config['last_link'] = 'Последняя';
Текст, который отборажается в ссылке «Последняя» справа. Если вы не хотите отображать эту ссылку, установите значение этого параметра в FALSE.
$config['last_tag_open'] = '<div>';
Открывающий тег для ссылки «Последняя» .
$config['last_tag_close'] = '</div>';
Закрывающий тег для ссылки «Последняя» .
Настройка ссылки «Далее»
$config['next_link'] = '&gt;';
Текст, который будет отбражаться в ссылке «Далее» («Следующая страница»). Если вы не хотите отображать эту ссылку, установите значение этого параметра в FALSE.
$config['next_tag_open'] = '<div>';
Открывающий тег для ссылки «Далее» .
$config['next_tag_close'] = '</div>';
Закрывающий тег для ссылки «Далее» .
Настройка ссылки «Назад» 
$config['prev_link'] = '&lt;';
Текст, который вы хотите показывать в ссылке «Назад» ( «Предыдущая страница», «Ранее» ). Если вы не хотите показывать эту ссылку, установите значение параметра в FALSE.
$config['prev_tag_open'] = '<div>';
Открывающий тег для ссылки «Назад» .
$config['prev_tag_close'] = '</div>';
Закрывающий тег для ссылки «Назад» .
Настройка ссылки на текущую страницу
$config['cur_tag_open'] = '<b>';
Открывающий тег для ссылки на текущую страницу.
$config['cur_tag_close'] = '</b>';
Закрывающий тег для ссылки на текущую страницу.
Настройка ссылки с номером страницы
$config['num_tag_open'] = '<div>';
Открывающий тег.
$config['num_tag_close'] = '</div>';
Закрывающий тег.
Скрытие страниц
Если вы хотите, чтобы не отображались ссылки на конкретные страницы (например, вы хотите сделать «следующая» и «предудыщая»), вы можете подавить их вывод:

$config['display_pages'] = FALSE; 

Пример:

<?php
class Blog extends CI_Controller {

        public function index()
        {
            $this->load->library('pagination');

            $config['base_url'] = 'http://site/index.php/blog/index/';
            $config['total_rows'] = 200;
            $config['per_page'] = 10; 
            $config['num_links'] = 3;
            $config['full_tag_open'] = '<p style="color:green">';
            $config['full_tag_close'] = '</p>';

            $this->pagination->initialize($config); 

            echo $this->pagination->create_links();

        }
        

        
}

И вызов: http://site/index.php/blog/

Теперь разберемся с выводом из базы каких-либо статей\новостей\заметок.

Допустим у нас есть база, а в ней табличка с заметками и там есть 3 статьи.

Выведим на трех страницах по одной статье:

Контроллер(blog.php):

<?php
class Blog extends CI_Controller {

        public function index()
        {
            $this->load->library('pagination');

            $config['base_url'] = 'http://site/index.php/blog/index/';
            $config['total_rows'] = 3;
            $config['per_page'] = 1; 
            $config['num_links'] = 3;
            $config['full_tag_open'] = '<p style="color:green">';
            $config['full_tag_close'] = '</p>';

            $this->pagination->initialize($config); 

            $data['articles'] = $this->get_articles($config['per_page'],$this->uri->segment(3));
            
            $this->load->view('view',$data);

        }
        
        function get_articles($num, $seg)
                {
                $this->load->database();
                        $query = $this->db->get('news',$num,$seg);
                        return $query->result_array();
                }

        
}

Вид (view.php):

<html>
<head>
<title></title>
</head>

<body>
<?php foreach($articles as $item):?>
<p><?=$item['title'];?></p>
<p><?=$item['text'];?></p>
<?php endforeach;?>
<?php echo $this->pagination->create_links();?>
</body>
</html>

И вызов: http://site/index.php/blog/


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект