2014-09-12 58 views
-1

我在CI中有一个问题,我的分页。 我的网址为第一页:http://example.com/products/page 第二页:http://example.com/products.page/12比24等+12codeigniter分页url和显示问题

控制器:

$config = array(); 
$config["base_url"] = base_url() . "shop/page"; 
$config["total_rows"] = $this->shop_model->products_count(); 
$config["per_page"] = 12; 
$config["uri_segment"] = 3; 
$choice = $config["total_rows"]/$config["per_page"]; 
$config["num_links"] = round($choice); 

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

$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0; 
$data['products'] = $this->shop_model-> 
getProducts($config["per_page"], $page); 

,如果我插入和:

$config['use_page_numbers'] = TRUE; 

型号:

function getProducts($limit, $start) 
{ 
    $this->db->select('*'); 
    $this->db->from('products'); 
    $this->db->join('products_img', 'products_img.i_product_id = products.id', 'left'); 
    $this->db->order_by("products.id", "desc"); 
    $this->db->limit($limit, $start); 
    $query = $this->db->get(); 
    if ($query->num_rows() > 0) { 
     foreach ($query->result() as $row) { 
      $data[] = $row; 
     } 
     return $data; 
    } 
    return false; 
} 

它s正确地给我的URL,但它显示几乎与第一页上的相同的产品。

我检查了这类问题的其他帖子,但我无法解决它。请帮忙!谢谢!

回答

0

限制不关心页面,它关心的结果入手:

function getProducts($limit, $start) 
{ 
    $this->db->select('*'); 
    $this->db->from('products'); 
    $this->db->join('products_img', 'products_img.i_product_id = products.id', 'left'); 
    $this->db->order_by("products.id", "desc"); 
    $this->db->limit($limit, ($start * $limit)); 
    $query = $this->db->get(); 
    if ($query->num_rows() > 0) { 
     foreach ($query->result() as $row) { 
      $data[] = $row; 
     } 
     return $data; 
    } 
    return false; 
} 

它显示“几乎相同”的结果,因为你只有1或2或3抵消如果页码为1,2或3 ..

上面假设页面1实际上是0,但是页面2是1等等等等。那是因为您默认为零。如果不是这种情况,您应该进行调整以反映您将页码表示为的内容。

+0

但我如何改变,使第2页仍然是第2页? – 2014-09-12 21:32:03

+1

$默认页面为1而不是0 ..然后执行$ this-> db-> limit($ limit,(($ start-1)* $ limit));而不是上面的代码 – skrilled 2014-09-12 21:33:19

+0

和默认页面应该更改?在图书馆中找不到... – 2014-09-12 21:47:53