Aquí les dejo un ejemplo para realizar la paginación con el framework codeigniter. Puedes leer http://codeigniter.com/user_guide/libraries/pagination.html en donde se explica de manera general los pasos a seguir.
1. Archivo de configuración:
Tal como se explica es la página oficial se debe hacer un archivo de configuración config/pagination.php y aquí colocar lo siguiente
$config = array(
'page_query_string' => true,
'per_page' => '10',
'last_link' => 'Ultimo',
'first_link' => 'Primero'
)
page_query_string Permite que se coloque una url de este modo http://example.com/index.php?c=test&m=page&per_page=20 y no de este http://example.com/index.php/test/page/20
Se habilita en éste arreglo ya que en el archivo de configuración config/config.php se encuentra de este modo config['enable_query_strings'] = FALSE; es decir para los casos de paginado no se trabaja con los URI segment
http://codeigniter.com/user_guide/general/urls.html
El resto de elementos en este arreglo $config es más intuitivo.
2. En el controlador:
Para cada método que se desea paginar escribe lo siguiente:
$this->load->library('pagination');
$this->pagination->base_url = base_url().'myController/myMethod?';
$this->pagination->total_rows = $this->myModel->myCount();
$data['link'] = $this->pagination->create_links();
$page = ($this->input->get('per_page'))?$this->input->get('per_page') : 0;
$data['results'] = $this->myModel->myResults($this->pagination->per_page, $page);
$this->load->view('myView', $data);
Se realiza el llamado a la librería
$this->load->library(‘pagination’);
Se establece la ruta con el llamado al controlador y el método en dónde estás paginando
$this->pagination->base_url = base_url().’myController/myMethod?’;
Se establece el llamado al modelo que retorna la cantidad de registros totales que vas a paginar
$this->pagination->total_rows = $this->myModel->myCount();
Se crea en link que posteriormente será llamado en la vista
$data['link'] = $this->pagination->create_links();
Se establece dónde se inicia la paginación por primera vez o luego de recibir los parámetros por GET
$page = ($this->input->get(‘per_page’)) ? $this->input->get(‘per_page’) : 0;
Finalmente se obtienen los registros con la cantidad(limit) y desde donde se comienza(start)
$data['results'] = $this->myModel->myResults($this->pagination->per_page, $page);
Luego cargas tu vista
$this->load->view(‘myView’, $data);
3. En la vista tienes lo siguiente:
<?php foreach ($results as $result): ?>
<?php echo $result->content ?>
<?php endforeach; ?>
<?php if (isset($link)): ?>
<center> <?php echo $link ?> </center>
<?php endif ?>
Listo! Algún comentario?