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?– ShutUpMagda
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.
– crishenrique1986
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. :)
– Sr. André Baill
I updated the code according to my attempts, but SELECT UF>CIDADE>BAIRRO .
– crishenrique1986
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/
– jean carlos