在Codeigniter中更改分页的URL / URI

时间:2012-02-01 14:47:13

标签: codeigniter

我正在使用Codeigniter中的分页类来从我的数据库中分页输出一些信息。

这一切都很完美,但是,我正在尝试整理人们用来访问网页的网址。

目前,我正在从网址中提取偏移量并将其设置为每页20个结果:

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

因此,如果您转到(在本例中)第2页,它将从db entry 20开始。

问题在于,首先,因为我已经将其设置为每页20个结果,这意味着我得到像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 个答案:

答案 0 :(得分:2)

在url中的codeigniter编号中表示:每页行数
因此,如果您需要使用页码更改每页号码,请更改以下代码:

<强>控制器

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