Good morning, people.
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 is returned from the bank, according to the selection, ie if I select the state of RJ, only RJ cities appear. p>
I was able to work on the registration page, but I could not get the page where I consult the data of a record already made, where everything should be filled as previously recorded. In the query page, the UF appears correctly filled, but CITY and DISTRICT appear the default option (SELECT) and disabled disabled.
SUMMARY:
What is the best way to make this code easy to reuse?
How to show Dropdown already with selected information?
Follow 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>
CONTROLLER-CLIENTS
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);
}
}
CONTROLLER-CITY
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"');
}
}
CONTROLLER-BAIRRO
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-BAIRROS
//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 anyone help people? I want to create 3 dependent dropdowns (UF & CITY & DOWNTOWN), in the client query page already registered, that is, with the information already filled in.