Postagem

Aqui é onde faço postagens de coisas que acho interessante.

Paginação no CodeIgniter

Postagem do dia 01/01/1970 na categoria CodeIgniter



Iremos fazer uma listagem de produtos; Teremos o controller, model e view para uma tabela no banco chamado produto.

No seu model, crie um método para somar todos os registros do banco,

Crie também um método que irá listar todos os dados e receba como parametro o número inicial e máximo de registro;


   /**
    * DESCRICAO: Metodo que conta total de registro existente no banco
    */
    function somarTodos()
    {
		return $this->db->count_all('produto');    
    }

    /**
     *  DESCRICAO: Metodo que busca todos os dados do produto
     */
    function buscarTodos( $_limit = 100, $_start = 0 )
    { 
    	$this->db->limit( $_limit, $_start ); 
        return $this->db->get('produto')->result();
    }



Agora vamos criar um helper para configurar a classe de paginação e criar os links;


if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

	/**
	 * Metodo que configura numero de registro por pagina
	 */
	function numRegister4PagePaginate()
	{
		return 5;
	}

	/**
	 * Metodo que cria link de paginacao
	 */
	function createPaginate( $_modulo, $_total )
	{	
		$ci = &get_instance();
		$ci->load->library('pagination');

		$config['base_url']    = base_url($_modulo.'/listar/');
		$config['total_rows']  = $_total;
		$config['per_page']    = numRegister4PagePaginate();
		$config["uri_segment"] = 3;
		$config['first_link']  = 'Primeiro';
		$config['last_link']   = 'àšltimo';
		$config['next_link']   = 'Próximo';
		$config['prev_link']   = 'Anterior';

		$ci->pagination->initialize($config);
		return $ci->pagination->create_links();
	}



Agora vamos ao nosso controller:


    /**
     *  DESCRICAO: Metodo que carrega a tela de listagem dos produtos
     */
    public function listar()
    {
        $this->load->helper('Paginate_helper');        
        $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;

        $array = array(
                    'produto'   => $this->produto_model->buscarTodos(numRegister4PagePaginate(), $page),
                    'paginacao' => createPaginate('produto', $this->produto_model->somarTodos() ) );

        $this->load->view('produto/listar', $array);
    }



E por último em nossa view abaixo da listagem dos dados acrescente a paginação:

echo $paginacao



Deixe seus comentários abaixo: