Dear friends
I use the PHP + CodeIgniter help. I'm new to CodeIgniter and I have the following question.
I'd like to persist the Search parameter in pagination that I'm not getting. After choosing the category of the client, for example: Individual or Legal, I would like the pagination not to lose its parameter.
Note: When I make the total pagination, it does not give an error. The error only occurs after choosing the parameter.
Below my source code I'm using.
===== Model =====
class Clientes_model extends CI_Model {
function __construct() {
parent::__construct();
}
function get($table,$fields,$where='',$perpage=0,$start=0,$one=false,$array='array'){
$this->db->select($fields);
$this->db->from($table);
$this->db->order_by('idClientes','asc');
$this->db->limit($perpage,$start);
if($where){
$this->db->where($where);
}
$query = $this->db->get();
$result = !$one ? $query->result() : $query->row();
return $result;
}
function getById($id){
$this->db->where('idClientes',$id);
$this->db->limit(1);
return $this->db->get('clientes')->row();
}
function add($table,$data){
$this->db->insert($table, $data);
if ($this->db->affected_rows() == '1')
{
return TRUE;
}
return FALSE;
}
function edit($table,$data,$fieldID,$ID){
$this->db->where($fieldID,$ID);
$this->db->update($table, $data);
if ($this->db->affected_rows() >= 0)
{
return TRUE;
}
return FALSE;
}
function delete($table,$fieldID,$ID){
$this->db->where($fieldID,$ID);
$this->db->delete($table);
if ($this->db->affected_rows() == '1')
{
return TRUE;
}
return FALSE;
}
function count($table) {
return $this->db->count_all($table);
}
public function getOsByCliente($id){
$this->db->where('clientes_id',$id);
$this->db->order_by('idOs','desc');
$this->db->limit(10);
return $this->db->get('os')->result();
}
}
===== Controller =====
class Clientes extends CI_Controller {
public function __construct() {
parent::__construct();
if((!$this->session->userdata('session_id')) || (!$this->session->userdata('logado'))){
redirect('siscom/login');
}
$this->load->model('clientes_model','',TRUE);
$this->data['menuClientes'] = 'clientes';
$this->load->helper(array('codegen_helper'));
}
public function index(){
$this->gerenciar();
}
public function gerenciar(){
if(!$this->permission->checkPermission($this->session->userdata('permissao'),'vCliente')){
$this->session->set_flashdata('error','Você não tem permissão para visualizar clientes.');
redirect(base_url());
}
$busc = '';
$tipPes = $this->input->get('tipPes');
// busca todos os lançamentos
if(! isset($tipPes) || $tipPes == 'todas'){
$busc = '';
} else {
if($tipPes == 'fisica'){
$busc = 'tipoPessoa = "fisica"';
} else {
if($tipPes == 'juridica'){
$busc = 'tipoPessoa = "juridica"';
}
}
}
$this->load->library('table');
$this->load->library('pagination');
$config['base_url'] = base_url().'index.php/clientes/gerenciar/';
$config['total_rows'] = $this->clientes_model->count('clientes');
$config['per_page'] = 10;
$config['next_link'] = 'Próxima';
$config['prev_link'] = 'Anterior';
$config['full_tag_open'] = '<div class="pagination alternate"><ul>';
$config['full_tag_close'] = '</ul></div>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li><a style="color: #2D335B"><b>';
$config['cur_tag_close'] = '</b></a></li>';
$config['prev_tag_open'] = '<li>';
$config['prev_tag_close'] = '</li>';
$config['next_tag_open'] = '<li>';
$config['next_tag_close'] = '</li>';
$config['first_link'] = 'Primeira';
$config['last_link'] = 'Última';
$config['first_tag_open'] = '<li>';
$config['first_tag_close'] = '</li>';
$config['last_tag_open'] = '<li>';
$config['last_tag_close'] = '</li>';
$this->pagination->initialize($config);
$this->data['results'] = $this->clientes_model->get('clientes','idClientes,nomeCliente,documento,tipoPessoa,telefone,celular,email,rua,numero,bairro,cidade,estado,cep',$busc,$config['per_page'],$this->uri->segment(3));
$this->data['view'] = 'clientes/clientes';
$this->load->view('tema/header', $this->data);
$this->load->view('tema/footer');
}
public function autonomo() {
if(!$this->permission->checkPermission($this->session->userdata('permissao'),'aCliente')){
$this->session->set_flashdata('error','Você não tem permissão para adicionar clientes.');
redirect(base_url());
}
$this->load->library('form_validation');
$this->data['custom_error'] = '';
if ($this->form_validation->run('clientes') == false) {
$this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false);
} else {
$data = array(
'nomeCliente' => set_value('nomeCliente'),
'documento' => set_value('documento'),
'tipoPessoa' => $this->input->post('tipoPessoa'),
'telefone' => set_value('telefone'),
'celular' => $this->input->post('celular'),
'email' => set_value('email'),
'rua' => set_value('rua'),
'numero' => set_value('numero'),
'bairro' => set_value('bairro'),
'cidade' => set_value('cidade'),
'estado' => set_value('estado'),
'cep' => set_value('cep'),
'dataCadastro' => date('Y-m-d')
);
if ($this->clientes_model->add('clientes', $data) == TRUE) {
$this->session->set_flashdata('success','Cliente adicionado com sucesso!');
redirect(base_url() . 'index.php/clientes/autonomo/');
} else {
$this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro.</p></div>';
}
}
$this->data['view'] = 'clientes/adicionarFisica';
$this->load->view('tema/header', $this->data);
$this->load->view('tema/footer');
}
public function empresa() {
if(!$this->permission->checkPermission($this->session->userdata('permissao'),'aCliente')){
$this->session->set_flashdata('error','Você não tem permissão para adicionar clientes.');
redirect(base_url());
}
$this->load->library('form_validation');
$this->data['custom_error'] = '';
if ($this->form_validation->run('clientes') == false) {
$this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false);
} else {
$data = array(
'nomeCliente' => set_value('nomeCliente'),
'documento' => set_value('documento'),
'tipoPessoa' => $this->input->post('tipoPessoa'),
'telefone' => set_value('telefone'),
'celular' => $this->input->post('celular'),
'email' => set_value('email'),
'rua' => set_value('rua'),
'numero' => set_value('numero'),
'bairro' => set_value('bairro'),
'cidade' => set_value('cidade'),
'estado' => set_value('estado'),
'cep' => set_value('cep'),
'dataCadastro' => date('Y-m-d')
);
if ($this->clientes_model->add('clientes', $data) == TRUE) {
$this->session->set_flashdata('success','Cliente adicionado com sucesso!');
redirect(base_url() . 'index.php/clientes/empresa/');
} else {
$this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro.</p></div>';
}
}
$this->data['view'] = 'clientes/adicionarJuridica';
$this->load->view('tema/header', $this->data);
$this->load->view('tema/footer');
}
public function editar() {
if(!$this->permission->checkPermission($this->session->userdata('permissao'),'eCliente')){
$this->session->set_flashdata('error','Você não tem permissão para editar clientes.');
redirect(base_url());
}
$this->load->library('form_validation');
$this->data['custom_error'] = '';
if ($this->form_validation->run('clientes') == false) {
$this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false);
} else {
$data = array(
'nomeCliente' => $this->input->post('nomeCliente'),
'documento' => $this->input->post('documento'),
'tipoPessoa' => $this->input->post('tipoPessoa'),
'telefone' => $this->input->post('telefone'),
'celular' => $this->input->post('celular'),
'email' => $this->input->post('email'),
'rua' => $this->input->post('rua'),
'numero' => $this->input->post('numero'),
'bairro' => $this->input->post('bairro'),
'cidade' => $this->input->post('cidade'),
'estado' => $this->input->post('estado'),
'cep' => $this->input->post('cep')
);
if ($this->clientes_model->edit('clientes', $data, 'idClientes', $this->input->post('idClientes')) == TRUE) {
$this->session->set_flashdata('success','Cliente editado com sucesso!');
redirect(base_url() . 'index.php/clientes/editar/'.$this->input->post('idClientes'));
} else {
$this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro</p></div>';
}
}
$this->data['result'] = $this->clientes_model->getById($this->uri->segment(3));
$this->data['view'] = 'clientes/editarCliente';
$this->load->view('tema/header', $this->data);
$this->load->view('tema/footer');
}
public function visualizar(){
if(!$this->permission->checkPermission($this->session->userdata('permissao'),'vCliente')){
$this->session->set_flashdata('error','Você não tem permissão para visualizar clientes.');
redirect(base_url());
}
$this->data['custom_error'] = '';
$this->data['result'] = $this->clientes_model->getById($this->uri->segment(3));
$this->data['results'] = $this->clientes_model->getOsByCliente($this->uri->segment(3));
$this->data['view'] = 'clientes/visualizar';
$this->load->view('tema/header', $this->data);
$this->load->view('tema/footer');
}
public function excluir(){
if(!$this->permission->checkPermission($this->session->userdata('permissao'),'dCliente')){
$this->session->set_flashdata('error','Você não tem permissão para excluir clientes.');
redirect(base_url());
}
$id = $this->input->post('id');
if ($id == null){
$this->session->set_flashdata('error','Erro ao tentar excluir cliente.');
redirect(base_url().'index.php/clientes/gerenciar/');
}
//$id = 2;
// excluindo OSs vinculadas ao cliente
$this->db->where('clientes_id', $id);
$os = $this->db->get('os')->result();
if($os != null){
foreach ($os as $o) {
$this->db->where('os_id', $o->idOs);
$this->db->delete('servicos_os');
$this->db->where('os_id', $o->idOs);
$this->db->delete('produtos_os');
$this->db->where('idOs', $o->idOs);
$this->db->delete('os');
}
}
// excluindo Vendas vinculadas ao cliente
$this->db->where('clientes_id', $id);
$vendas = $this->db->get('vendas')->result();
if($vendas != null){
foreach ($vendas as $v) {
$this->db->where('vendas_id', $v->idVendas);
$this->db->delete('itens_de_vendas');
$this->db->where('idVendas', $v->idVendas);
$this->db->delete('vendas');
}
}
//excluindo receitas vinculadas ao cliente
$this->db->where('clientes_id', $id);
$this->db->delete('lancamentos');
$this->clientes_model->delete('clientes','idClientes',$id);
$this->session->set_flashdata('success','Cliente excluido com sucesso!');
redirect(base_url().'index.php/clientes/gerenciar/');
}
}
===== View =====
<?php if($this->permission->checkPermission($this->session->userdata('permissao'),'aCliente')){ ?>
<div class="span5" style="margin-left: 0; margin-bottom: 10px;">
<a href="<?php echo base_url();?>index.php/clientes/empresa" class="btn btn-success"><i class="icon-plus icon-white"></i> Pessoa Jurídica</a>
<a href="<?php echo base_url();?>index.php/clientes/autonomo" class="btn btn-primary"><i class="icon-plus icon-white"></i> Pessoa Física</a>
<?php $tipPes = $this->input->get('tipPes'); ?>
<div class="span7" style="margin-left: 0px; margin-top: -17px;">
<form action="<?php echo current_url(); ?>" method="get" >
<div class="span4" style="margin-left: 0px;">
<label><strong>Situação</strong> <i class="icon-info-sign tip-top" title="Selecione o Tipo de Pessoa."></i></label>
<select id="tipPes" name="tipPes" class="span12" style="margin-top: -4px;">
<option selected disabled class="text-hide">Selecione uma opção...</option>
<option value="todas">Todas</option>
<option value="fisica" <?php if($tipPes == 'fisica'){ echo 'selected';} ?>>Fisica</option>
<option value="juridica" <?php if($tipPes == 'juridica'){ echo 'selected';} ?>>Jurídica</option>
</select>
</div>
<div class="span4" style="margin-top: 0px;">
  <button type="submit" class="span12 btn btn-warning"><i class="icon-search"></i> Pesquisar</button>
</div>
</form>
</div>
<div class="widget-box">
<div class="widget-title">
<span class="icon">
<i class="icon-user"></i>
</span>
<h5>Clientes</h5>
</div>
<div class="widget-content nopadding">
<table class="table table-bordered">
<thead>
<tr>
<th>#</th>
<th>Nome</th>
<th>CPF/CNPJ</th>
<th>Telefone</th>
<th>Pessoa</th>
<th>Ações</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="5">Nenhum Cliente Cadastrado</td>
</tr>
</tbody>
</table>
</div>
</div>
<?php } else { ?>
<div class="widget-box">
<div class="widget-title">
<span class="icon">
<i class="icon-user"></i>
</span>
<h5>Clientes</h5>
</div>
<thead>
<tr>
<th>#</th>
<th>Nome</th>
<th>CPF/CNPJ</th>
<th>Telefone</th>
<th>Pessoa</th>
<th>Ações</th>
</tr>
</thead>
<tbody>
<?php foreach ($results as $r) {
//Comando para mudar a cor do texto - Pessoa Física e Jurídica
if($r->tipoPessoa == 'juridica'){ $text = 'success'; } else { $text = 'info'; }
echo '<tr>';
echo '<td style="text-align: center">'.$r->idClientes.'</td>';
echo '<td>'.$r->nomeCliente.'</td>';
echo '<td style="text-align: center">'.$r->documento.'</td>';
echo '<td style="text-align: center">'.$r->telefone.'</td>';
echo '<td style="text-align: center; font-size: 13px;">
<strong class="text text-'.$text.'">'.ucfirst($r->tipoPessoa).'</strong></td>';
echo '<td style="text-align: center">';
if($this->permission->checkPermission($this->session->userdata('permissao'),'vCliente')){
echo '<a href="'.base_url().'index.php/clientes/visualizar/'.$r->idClientes.'" style="margin-right: 1%" class="btn tip-top" title="Ver mais detalhes"><i class="icon-search"></i></a>';
}
if($this->permission->checkPermission($this->session->userdata('permissao'),'eCliente')){
echo '<a href="'.base_url().'index.php/clientes/editar/'.$r->idClientes.'" style="margin-right: 1%" class="btn btn-info tip-top" title="Editar Cliente"><i class="icon-pencil icon-white"></i></a>';
}
if($this->permission->checkPermission($this->session->userdata('permissao'),'dCliente')){
echo '<a href="#modal-excluir" role="button" data-toggle="modal" cliente="'.$r->idClientes.'" style="margin-right: 1%" class="btn btn-danger tip-top" title="Excluir Cliente"><i class="icon-remove icon-white"></i></a>';
}
echo '</td>';
echo '</tr>';
}?>
<tr>
</tr>
</tbody>
</table>
</div>
</div>
<?php echo $this->pagination->create_links();}?>
<!-- Modal -->
<div id="modal-excluir" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<form action="<?php echo base_url() ?>index.php/clientes/excluir" method="post" >
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h5 id="myModalLabel">Excluir Cliente</h5>
</div>
<div class="modal-body">
<input type="hidden" id="idCliente" name="id" value="" />
<h5 style="text-align: center">Deseja realmente excluir este cliente e os dados associados a ele (OS, Vendas, Receitas)?</h5>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Cancelar</button>
<button class="btn btn-danger">Excluir</button>
</div>
</form>
</div>
<script type="text/javascript">
$(document).ready(function(){
$(document).on('click', 'a', function(event) {
var cliente = $(this).attr('cliente');
$('#idCliente').val(cliente);
});
});
</script>
Please help me with this question.
Thankful,
Renato