Paginación en codeigniter
Se utiliza para mostrar un conjunto de resultados de una base de datos, no en su totalidad sino estableciendo la cantidad de registros a mostrar por cada página. Así también en la vista se genera una serie de enlaces (de la forma: << anterior 2 3 4 5 6 siguiente >>) de manera que permita al usuario desplazarse hacia las demás páginas.
Supongamos que tenemos una tabla llamada ‘contactos’ en nuestra base de datos, con sus campos ‘nombre’ y ‘apellido’, y queremos hacer un paginador para mostrar al usuario 4 contactos por página. A continuación les mostraré tanto el código como la explicación para el modelo, la vista y el controlador.
Controlador: contactos.php
function listar(){
//cargamos la librería
$this->load->library(‘pagination’);
//configuramos
$config['base_url'] = base_url().”contactos/listar/”;
$config['total_rows'] = $this->Contactos_model->getCantidad();//obtenemos la cantidad de registros
$config['per_page'] = ’4′; //cantidad de registros por página
$config['num_links'] = ’2′; //nro. de enlaces antes y después de la pagina actual
$config['prev_link'] = ‘anterior’; //texto del enlace que nos lleva a la pagina ant.
$config['next_link'] = ‘siguiente’; //texto del enlace que nos lleva a la sig. página
$config['uri_segment'] = ’3′; //segmentos que va a tener nuestra URL
$config['first_link'] = ‘<<’; //texto del enlace que nos lleva a la primer página
$config['last_link'] = ‘>>’; //texto del enlace que nos lleva a la última página
// inicializamos
$this->pagination->initialize($config);
/* llamamos al método de nuestro modelo para hacer la consulta pasándole como parámetro la cantidad de registros por página y el registro por el que va a comenzar (estará contenido en el 3er segmento de la URL) */
$contactos = $this->Contactos_model->getContactos($config['per_page'], $this->uri->segment(3));
//ahora debemos llamar a la vista y pasarle el array ‘$contactos’ obtenido.
$datos[‘contactos’] = $contactos;
$this->load->view(‘contactos/contactos_view’, $datos, false);
}
modelo: contactos_model.php
/*método que devuelve una cierta cantidad de registros dependiendo del valor de los parámetros. Con la cláusula ‘limit’ establecemos el número de registros por página y desde que registro inicia la consulta. */
function getContactos($numeroRegistros, $inicio)
{
$this->db->limit($numeroRegistros, $inicio);
$this->db->select(‘idContacto, nombre, apellido’);
$query = $this->db->get(‘contactos’);
return $query->result();
}
//método que devuelve el total de registros contenidos en la tabla ‘contactos’
function getCantidad ()
{
return $this->db->count_all(‘contactos’);
}
Finalmente en la vista recorremos el conjunto de resultados con un “foreach” y mostramos los datos por pantalla.
También debemos mostrar los enlaces a las otras páginas con “$this->pagination->create_links();”
Vista: contactos_view.php
<?php
if(isset($contactos)):
foreach($contactos as $c):
echo $c->nombre.’ <br />’.c->apellido;
endforeach;
endif; //endif
?>
<?php echo $this->pagination->create_links(); ?>