CodeIgniter Forums

Full Version: Pagination 404, can someone help please!
You're currently viewing a stripped down version of our content. View the full version with proper formatting.

El Forum

[eluser]ppwalks[/eluser]
I am trying to paginate a record set in an admin panel, the url is http://localhost/mydomain/admin/products. the links show up correctly but when I click the link it gives me a 404.

Here is my code:

Model

Code:
function get_admin_products() {
   $result = $this->db->query("SELECT p.product_id, p.product_name, p.price, GROUP_CONCAT( DISTINCT (
    pc.category_id
    ) ) AS category_ids, GROUP_CONCAT( DISTINCT (
    c.name
    ) ) AS category_names
    FROM product AS p
    LEFT JOIN product_category AS pc
    USING (
    product_id
     )
    LEFT JOIN category AS c
    USING (
    category_id
    )
    GROUP BY product_id");
    return $result->result_array();
}
Controller

Code:
function index() {
  $data['admin_title']= "";
  $data['folder']= "products";
  $data['main']= "products_view";
  $admin_products = $this->MProducts->get_admin_products();
   $quantity = 15; // how many per page
    $start = $this->uri->segment(3); // this is auto-incremented by the pagination class
     if(!$start) $start = 0;    
     $data['admin_products'] = array_slice($admin_products, $start, $quantity);
     $config['base_url'] = base_url().'admin/products';
     $config['uri_segment'] = 3;
     $config['total_rows'] = count($admin_products);
     $config['per_page'] = $quantity;
     $this->pagination->initialize($config);

  $data['pagination'] = $this->pagination->create_links();
  $data['get_last'] = $this->MProducts->get_last_product_id();
  $data['build_categories'] = $this->MProducts->get_all_categories();
        $this->load->view('admin/user_view', $data);
}

If someone could please help it would be much appreciated..

Thanks

Paul

El Forum

[eluser]Aken[/eluser]
1) Use site_url() instead of base_url() when it comes to links to your web pages. base_url() is better for static assets, or anything else that doesn't go through index.php

2) Assuming admin is a folder, and products is your controller, viewing a pagination URL such as localhost/mydomain/admin/products/15 will essentially be looking for a method in your Products controller named 15(). Which obviously doesn't exist. See the Controllers User Guide page for a good explanation of how the URI structure works.

You need to set up a route that tells the pagination URIs to point back to the index() method.

Code:
$route['admin/products/:num'] = 'admin/products';

It could be a couple other things, but that's my best guess based on your code.

El Forum

[eluser]ppwalks[/eluser]
You are a superstar, that got it!

Thanks