Jump to content

CI - Pagination


ReeceSayer

Recommended Posts

Hey, I'm trying to combine two of the tutorials i've been using and have gotten a little stuck.

 

I create an online cart with pagination links however the links are sending me to a 404 error page.

 

I've been playing around with it to try and get it to work but can't seem to see my problem so there might be things commented out.

 

My default url is (http://example.com/tutorial/shop), the pagination is trying to reach http://example.com/tutorial/shop/4 (this depends on how many results i show on the first page)

 

Controller (shop.php):

<?php
class Shop extends Controller {

//included for pagination
    public function __construct() {
        parent:: __construct();
        $this->load->helper("url");
        $this->load->model("products_model");
        $this->load->library("pagination");
    }

function index() {
	//star pagination
	$config = array();
        $config["base_url"] = base_url() . "shop";
        $config["total_rows"] = $this->products_model->record_count();
        $config["per_page"] = 4;
        $config["uri_segment"] = 3;

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

        $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
        $data["products"] = $this->products_model->
            fetch_products($config["per_page"], $page);
        $data["links"] = $this->pagination->create_links();
	//end of pagination

	$this->load->model('Products_model');

	//$data['products'] = $this->Products_model->get_all();

	$this->load->view('products', $data);


}

function add() {

	$this->load->model('Products_model');

	$product = $this->Products_model->get($this->input->post('id'));

	$insert = array(
		'id' => $this->input->post('id'),
		'qty' => 1,
		'price' => $product->price,
		'name' => $product->name
	);
	if ($product->option_name) {
		$insert['options'] = array(
			$product->option_name => $product->option_values[$this->input->post($product->option_name)]
		);
	}

	$this->cart->insert($insert);

	redirect('shop');

}

function remove($rowid) {

	$this->cart->update(array(
		'rowid' => $rowid,
		'qty' => 0
	));

	redirect('shop');

}

}

 

Model (product_model):

<?php
class Products_model extends Model {

    public function __construct() {
        parent::__construct();
    }


function fetch_products($limit, $start) {
//function get_all($limit, $start) {
    $this->db->limit($limit, $start);
	$results = $this->db->get('products')->result();

	foreach ($results as &$result) {

		if ($result->option_values) {
			$result->option_values = explode(',',$result->option_values);
		}

	}

	return $results;

}

function get($id) {

	$results = $this->db->get_where('products', array('id' => $id))->result();
	$result = $results[0];

	if ($result->option_values) {
		$result->option_values = explode(',',$result->option_values);
	}

	return $result;
}

//attempt at implementing pagination class
public function record_count() {
        return $this->db->count_all("products");
    }
/*
public function fetch_products($limit, $start) {
        $this->db->limit($limit, $start);
        $query = $this->db->get('products');
        if ($query->num_rows() > 0) {
            foreach ($query->result() as $row) {
                $result[] = $row;

          }
            return $result;
        }
        return false;
   }
*/
}

 

Any help or points in the right direction would be awesome!

 

Thanks

Link to comment
https://forums.phpfreaks.com/topic/257661-ci-pagination/
Share on other sites

Just incase anyone's having trouble with this I did get it working on my host (HostGator) by changing the base url in the config.

 

Rather than http://example.com/tutorial/ which i initially had, i changed it to http://example.com/tutorial/shop

 

This works as expected but with a strange side effect of the URL being http://example.com/tutorial/shop/shop/4 when going through other pages.

 

Will mark as solved.

Link to comment
https://forums.phpfreaks.com/topic/257661-ci-pagination/#findComment-1322873
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.