Sistema de Busca com Codeigniter
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!
Discussão (1)
Carregando comentários...