viernes, 6 de marzo de 2009

Paginación con Codeigniter

En el ejemplo leemos de una base de datos que contiene una tabla llama news y dispone de dos campos str_title_new y pk_new(identificador, clave primaria). Mostramos el título de la noticia y el paginador.


<?php



class News extends Controller



{



function
News()



{



parent::Controller();

$this->load->helper('url');

}



function
list_news()

{

$this->load->library('pagination');

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




$config['base_url'] = site_url('news/list_news/');

$config['total_rows'] = $this->news_model->get_total_number_news();

$config['per_page'] = '3'; //Número de noticias por página

$config['num_links'] = '3'; //Número de enlaces antes y después de la página actual

$config['first_link'] = '&lt;&lt;'; //Texto del enlace que nos lleva a la página

$config['last_link'] = '&gt;&gt;'; //Texto del enlace que nos lleva a la última página

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



$query = $this->news_model->get_news($config['per_page'],

$this->uri->segment(3)); //le pasamos el total de elementos por página y el offset



foreach (
$query->result() as $row)

{

echo
$row->str_title_new;

}


echo '<p>'.$this->pagination->create_links().'</p>'; //de esta forma imprimimos el paginador

}



}

?>







Y el modelo:


<?php



class News_model extends Model{



function
News_model()

{



parent::Model();



$this->load->database();

}



function
get_news($number_items,$offset)

{



$query = $this->db->get('news',$number_items,$offset);

return
$query;

}


function get_total_number_news()


{

return
$this->db->count_all('news');



}



}

?>


5 comentarios:

  1. Me fucniona pero al pasar a la siguiente pagina me sale no found. por q sea

    ResponderEliminar
  2. hola tarde pero no si te funciones, te sale que no encuentra la página porque mandas un parametro a la funcion, y la funcion no está recibiendo nada, ademas de eso en la base de datos no estas dandole que empiece desde ese punto, la idea es que recurperes ese valos con $this->uri->segment(3);
    y lo pases a la función del model como $offset.

    ResponderEliminar
  3. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
  4. y sí lo estoy haciendo con oracle? como debería ser la sintaxis?

    ResponderEliminar