Codeigniter3 / Mysql - Select List

Asked

Viewed 280 times

1

Good morning Personal.

I’m working on a code using Codeigniter, which has a registration form. This form has three Dropdown (State, City and Neighborhood), and the data are returned from the database, according to the selection, that is, if I select the state of RJ, appears only cities of RJ....

I was able to make work on the registration page, but I could not on the page where I consult the data of a register already made, where everything should come filled out as a previous registration. On the query page, the UF appears filled correctly, but CITY and NEIGHBORHOOD appear the default option (SELECT) and with disabled enabled.

SUMMARY:

How best to perform this code in a way that is easy to re-use?

How to show Dropdown already with selected information?

Follows my code:

JAVASCRIPT

<script type="text/javascript">

var base_url = "<?php echo base_url() ?>";

$(function () {

    var codigo_cliente = $('#cCodigocliente').val();
    var uf = $('#cUf').val();


    $.post(base_url + 'ajax/cidades/search_cidades', {
        codigo_cliente: codigo_cliente,
        uf: uf
    }, function (data) {
        $('#cCidade').html(data);
        if (uf !== '') {
            $('#cCidade').removeAttr('disabled');
        }
    });

    $('#cUf').change(function () {

        $('#cCidade').attr('disabled', 'disabled');
        $('#cCidade').html("<option>Selecione</option>");
        $('#cBairro').attr('disabled', 'disabled');
        $('#cBairro').html("<option>Selecione</option>");

        var uf = $('#cUf').val();

        $.post(base_url + 'ajax/cidades/search_cidades', {
            uf: uf
        }, function (data) {
            $('#cCidade').html(data);

            if (uf !== '') {
                $('#cCidade').removeAttr('disabled');
            }
        });

    });

    $('#cCidade').change(function () {

        var codigo_cidade = $('#cCidade').val();

        $.post(base_url + 'ajax/bairros/search_bairros', {
            codigo_cidade: codigo_cidade
        }, function (data) {
            $('#cBairro').html(data);
            if (codigo_cidade !== '') {
                $('#cBairro').removeAttr('disabled');
            }
        });

    });

});

VIEW

<label for="">UF</label>
<?php echo form_dropdown('cUf', $ufs_item, $cliente_item['uf'], 'id="cUf" 
   class="form-control input cUf"');
?>

<label for="">CIDADE</label>
<select style="text-transform:uppercase" name="cCidade" id="cCidade" class="form-control input cCidade" disabled>                                                            
   <option value="">Selecione</option>
</select>

<label for="">BAIRRO</label>
<select style="text-transform:uppercase" name="cBairro" id="cBairro" class="form-control input cBairro" disabled><option>Selecione</option>
</select>

CUSTOMER CONTROLLER

public function listar_cliente($codigo_cliente) {
    //SOLICITA OS DADOS DO CLIENTE QUE ESTÁ SENDO CONSULTADO
    $data['cliente_item'] = $this->clientes_model->get_cliente($codigo_cliente);

    if (empty($data['cliente_item'])) {
        show_404();
    } else {;
        $this->load->model("ufs_model");

        //SOLICITA TODOS OS ESTADOS
        $data['ufs_item'] = $this->ufs_model->get_Ufs();

        $this->load->view('inc/header_view');
        $this->load->view('clientes/listar_cliente', $data);
    }
}

CITY CONTROLLER

public function search_cidades(){
    //RECEBE POST(AJAS) PÁGINA EDITA CLIENTES
    $codigo_cliente = $this->input->post('codigo_cliente');
    $uf = $this->input->post('uf');

    //VERIFICA SE O CODIGO DO CLIENTES ESTÁ VAZIO
    //VAZIO = CADASTRO NOVO   |   VALOR = EDITAR CADASTRO
    if(is_null($codigo_cliente)){
        //SOLICITA TODAS AS CIDADES DA UF VIA POST
        $cidades_item = $this->localizacao_model->get_Cidades($uf);
        //RETORNO FUNÇÃO CODEIGNITER QUE CRIA DROPDOWN CIDADE, SEM NENHUM OPTION SELECIONADO
        echo form_dropdown('cCidade', $cidades_item, '', 'id="cCidade" class="form-control input cCidades"');
    }else{
        //SOLICITA A CIDADE DO CLIENTE ATRAVÉS DO CODIGO_CLIENTE VIA POST
        $cidade_item = $this->localizacao_model->get_CidadeByCliente($codigo_cliente);
        //SOLICITA TODAS AS CIDADES DA UF VIA POST
        $cidades_item = $this->localizacao_model->get_Cidades($uf);
        //RETORNO FUNÇÃO CODEIGNITER QUE CRIA DROPDOWN CIDADE, COM OPTION SELECIONADO($cidade_item)
        echo form_dropdown('cCidade', $cidades_item, $cidade_item['cidade'], 'id="cCidade" class="form-control input cCidade"');  

    }

}

NEIGHBORHOOD CONTROLLER

public function search_bairros(){
    //RECEBE POST(AJAS) PÁGINA EDITA CLIENTES
    $codigo_cliente = $this->input->post('codigo_cliente');
    $ccodigo_cidade = $this->input->post('codigo_cidade');

    //VERIFICA SE O CODIGO DO CLIENTES ESTÁ VAZIO
    //VAZIO = CADASTRO NOVO   |   VALOR = EDITAR CADASTRO
    if(is_null($codigo_cliente)){
        //SOLICITA TODAS OS BAIRROS DA CIDADE VIA POST
        $bairros_item = $this->cidades_model->get_Bairros($codigo_cidade);
        //RETORNO FUNÇÃO CODEIGNITER QUE CRIA DROPDOWN BAIRRO, SEM NENHUM OPTION SELECIONADO
        echo form_dropdown('cBairro', $bairros_item, '', 'id="cBairro" class="form-control input cBairro"');
    }else{
        //SOLICITA O BAIRRO DO CLIENTE ATRAVÉS DO CODIGO_CLIENTE VIA POST
        $bairro_item = $this->bairros_model->get_BairroByCliente($codigo_cliente);
        //SOLICITA TODAS OS BAIRROS DA CIDADE VIA POST
        $bairros_item = $this->bairros_model->get_Bairros($codigo_cidade);
        //RETORNO FUNÇÃO CODEIGNITER QUE CRIA DROPDOWN BAIRRO, COM OPTION SELECIONADO($bairro_item)
        echo form_dropdown('cBairro', $bairros_item, $bairro_item['bairro'], 'id="cBairro" class="form-control input cBairro"');
    }

}

MODEL-UFS

public function get_Ufs() {
    $query = $this->db
            ->order_by('uf')
            ->get('tb_conf_ufs')->result();

    $list = array();
    $list[''] = "SELECIONE";
    foreach ($query as $result) 
    {
        $list[$result->uf] = $result->uf;                
    }
    return $list;   
}  

MODEL-CITIES

//RETORNA TODAS CIDADES DE ACORDO COM O ESTADO INFORMADO
public function get_Cidades($uf = null) {
    $query = $this->db
            ->where("uf", $uf)
            ->order_by('cidade')
            ->get('tb_conf_cidades')->result();

    $list = array();
    $list[''] = "SELECIONE";
    foreach ($query as $result) 
    {
        $list[$result->codigo_cidade] = $result->cidade;                
    }
    return $list;   
}

//RETORNA A CIDADE DO CLIENTE CONSULTADO
public function get_CidadeByCliente($codigo_cliente) {
    $codigo = $codigo_cliente;
    $query = $this->db
            ->select('cidade')
            ->where('codigo_cliente', $codigo)
            ->get('tb_clientes');

    return $query->row_array();
}

MODEL-NEIGHBORHOODS

//RETORNA OS BAIRROS DE ACORDO COM A CIDADE INFORMADA
public function get_Bairros($codigo_cidade = null) {
    $query = $this->db
            ->where("codigo_cidade", $codigo_cidade)
            ->order_by('bairro')
            ->get('tb_conf_bairros')->result();

    $list = array();
    $list[''] = "SELECIONE";
    foreach ($query as $result) 
    {
        $list[$result->codigo_cidade] = $result->cidade;                
    }
    return $list;   
}

//RETORNA O BAIRRO DO CLIENTE CONSULTADO
public function get_BairroByCliente($codigo_cliente) {
    $codigo = $codigo_cliente;
    $query = $this->db
            ->select('codigo_bairro')
            ->where('codigo_cliente', $codigo)
            ->get('tb_clientes');

    return $query->row_array();
}

Can someone help, guys? I want to create 3 dependent Dropdowns (UF>CIDADE>BAIRRO), in the already registered customer consultation program, that is, with the information already filled in.

  • When you say "re-use" you’re talking about CRUD? I mean, you’re talking about using the same form to register and to fill in data that are already registered (edit)? That’s it?

  • Yes, I saw several examples of how to create a SELECT DYNAMICO, but only two fields and for the new registration form. I was able to do the new registration with three fields, but when I try to do for a consultation form of the registered client, I come across the situation where I have to do everything again, because in it I will need to show the selected option.

  • You can do a check, see if the method is to add or edit, if you edit, you do the search according to the database. :)

  • I updated the code according to my attempts, but SELECT UF>CIDADE>BAIRRO .

  • Hello, I hope you are well and have found the answer... if not, see these links http://snehakinkar.blogspot.com/2013/05/cascading-list-of-country-state-city.html http://www.91weblessons.com/codeigniter-ajax-country-state-city-drop-down/ https://github.com/eboominathan/Dependent-Dropdown-in-Codeigniter-3.0.3 http://makitweb.com/dynamic-dependent-dropdown-in-codeigniter-with-ajax/

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.