Изменение URL / URI нумерации страниц в Codeigniter - PullRequest
1 голос
/ 01 февраля 2012

Я использую класс нумерации страниц в Codeigniter, чтобы вывести некоторую информацию из моей базы данных.

Все работает отлично, однако я пытаюсь привести в порядок URL-адреса, которые люди используют для доступа к страницам.

В настоящее время я извлекаю смещение из URL и установил его на 20 результатов на странице:

http://www.mysite.com/page/20

Так что, если вы перейдете (в данном случае) на вторую страницу,он начинается с записи 20 в БД.

Проблема в том, что, во-первых, поскольку я установил для нее 20 результатов на страницу, это означает, что я получаю нечетные URL-адреса, такие как http://www.mysite.com/page/60, что будет страницей 4.

Во-вторых, это двойная цифра, которую я хотел бы привести в порядок.

В основном я хочу сделать так, чтобы URL-адреса выглядели так:

http://www.mysite.com/page/2
http://www.mysite.com/page/3
http://www.mysite.com/page/4

и т. Д....

Я установил номера страниц использования на TRUE, но проблема в том, что тогда он устанавливает смещение на 2, 3, 4 и т. Д., Когда оно должно быть 20, 40, 60.

Есть идеи?Я думал о каком-то вычислении в модели, чтобы выяснить, сколько записей должно смещаться, основываясь на отдельном номере страницы из URL (когда для номеров использования установлено значение TRUE).Хотя я не могу понять это правильно ...

1 Ответ

2 голосов
/ 02 февраля 2012

Номер кодового указателя в URL означает: строка на странице
Поэтому, если вам нужно изменить на страницу номер с номер страницы , измените свой код следующим образом:

Контроллер

class news extends CI_Controller{
    function index($page = 'page', $page_number = 0){
         $row_per_page = 20; // define page per page

         // for example if page number == 4 then offset 80
         $offset = $page_number * $row_per_page 

         // we need to request data from database
         // we need this query "SELECT * FROM `mytable` limit 80,20"
         // offset = 80 AND per page = 20
         $this->db->get('mytable', $offser, $row_per_page); 

         $this->load->library('pagination');

         // you can change this url by URI Routing and other solutions.
         /*
          change application/config/routes.php to nice url
          $route['news/page/(:num)'] = "news/index/page/$1";

         */
         $config['base_url'] = 'http://example.com/index.php/news/index/page/';

         // Change $count_of_rows with your query num_rows you can use SQL_CALC_FOUND_ROWS 
         $config['total_rows'] = $count_of_wors;
         $config['per_page'] = $row_per_page; 

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

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

}

Это очень просто. Наслаждайтесь CI

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...