Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

programador_brasileiro2015

Sistema de Busca com Codeigniter

Recommended Posts

Olá pessoal, sou novo por aqui e no fórum. Gostaria de uma ajudinha de vocês.

Estou tentando fazer por conta própria um sistema de busca simples com paginação, porém não consigo ajeitar um erro.

 

Bom... o código abaixo está funcionando perfeitamente, porém na hora de buscar, o sistema até busca os registros mas a numeração da paginação continua o mesmo.

 

Exemplo:

 

Estou listando somente 5 registros na tela, tendo o total de 20 registros cadastrados.

nome do cliente 1
nome do cliente 2
nome do cliente 3
nome do cliente 4
nome do cliente 5

[ < ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ > ]

Quando tento buscar um nome do cliente, funciona, porém a numeração continua o mesmo, ou seja, de 1 a 4.

 

Veja o código:

 

 

Model

class Lista_paginacao_busca_model extends CI_Model 
{
    function __construct(){
        parent::__construct();
    }


# Somar quantidade de registro
function somar_registros()
{
# Caso não seja acionado a busca, listar normal
if($this->input->get('txt')=="")
{
    return $this->db->count_all('pessoas'); // Isso aqui faz gerar a quantidade de numeros na paginação.
}
else
{ 
   $this->db->like('nome', $this->input->get('txt'));
   return $this->db->count_all('pessoas'); // Estou tentando retornar a mesma quantidade que foi buscado para gerar a quantidade de correta na busca.

}    
    }


# Consultar a tabela para realizar a paginação
    function consultar_tabela($_limit, $_start)
    { 
# Criando a ordem na listagem
$this->db->order_by('id', 'desc');


# Caso não seja acionado a busca, listar normal
if($this->input->get('txt')=="")
{
     $this->db->limit($_limit, $_start);
return $this->db->get('pessoas')->result();
}
else
{
$this->db->like('nome', $this->input->get('txt'));
#$this->db->or_like('fone', $this->input->get('txt'));
$this->db->limit($_limit, $_start);
return $this->db->get('pessoas')->result();
}
    }

Controller:

class Lista_paginacao_busca extends CI_Controller 
{ 
# Liga o model geral
    function __construct() 
{
        parent::__construct();
$this->load->model('lista_paginacao_busca_model');
$this->load->model('includes');
    }


# Carregando os registros com paginação
public function index()
{
$this->page();
}


public function buscar()
{
$this->page();
}


# Listagem dos registros na view
    public function page()
    {
$url = '/lista_paginacao_busca/page/';


        $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;


$data['titulo']   = "Lista com paginação";
$data["registros"]   = $this->lista_paginacao_busca_model->consultar_tabela(registrar_paginacao_num(), $page);
        $data["gerar_paginacao"] = criar_paginador($url, $this->lista_paginacao_busca_model->somar_registros());


$this->includes->cabeca($data);
        $this->load->view('lista_paginacao_busca', $data);
$this->includes->rodape();
    }
Helper:
if(!function_exists('criar_paginador'))
{
function registrar_paginacao_num(){return 5;}


function criar_paginador($_url, $_total)
{
$ci = &get_instance();
$ci->load->library('pagination');


$config['uri_segment']  = 3;
$config['base_url']     = base_url($_url);
$config['total_rows']   = $_total;
$config['per_page']     = registrar_paginacao_num();
$config["num_links"]    = round($config["total_rows"] / $config["per_page"]);   
$config['use_page_numbers'] = false; 
$config['display_pages']  = true;


$config['full_tag_open']   = '<div class="pagination"><ul>';
$config['first_link']     = '« Primeira';
$config['first_tag_open']  = '<li class="prev">';
$config['first_tag_close'] = '</li>';


$config['last_link']     = 'Ultima »';
$config['last_tag_open']   = '<li class="next">';
$config['last_tag_close']  = '</li>';


$config['next_link']     = 'Próximo →';
$config['next_tag_open']   = '<li class="next">';
$config['next_tag_close']  = '</li>';


$config['prev_link']     = '← Anterior';
$config['prev_tag_open']   = '<li class="prev">';
$config['prev_tag_close']  = '</li>';


$config['cur_tag_open']    = '<li class="active"><a href="">';
$config['cur_tag_close']   = '</a></li>';


$config['num_tag_open']    = '<li class="page">';
$config['num_tag_close']   = '</li>';
$config['full_tag_close']  = '</ul></div>'; 


$ci->pagination->initialize($config);
return $ci->pagination->create_links();
}
}
Desde já agradeço a ajuda gente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, foi um erro meu...

 

O código acima está funcionando perfeitamente e não há erro algum.

O problema é que, quando não há registro suficiente na listagem na hora da busca, a paginação some. é somente isso.

 

O código acima irá servir para aqueles que estão em busca de como fazer.

 

Só não está funcionando "ainda" quando avança a paginação na busca. Em uma outra oportunidade irei postar aqui.

 

Abraços a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.