Fórum Combo box com estados e cidades? #598701
19/11/2018
0
O meu código nesse momento consegue exibir do banco somente meus estados e ao selecionar um estado não aparece cidade nenhuma no outro combo box.
Tenho 2 tables no meu banco chamadas cidades e estado. A tabela estado contém colunas com seu código, sigla e nome. E a tabela cidades contém colunas com código do estado correspondente, o código dela e seu nome.
Página php: Trazendo os estados com seu nome
<?php
include('conexao.php');
mysqli_set_charset($conn,'utf8');
$sql = "SELECT * FROM estados ORDER BY nome";
$res = mysqli_query($conn, $sql);
$num = mysqli_num_rows($res);
for ($i=0; $i < $num; $i++) {
$dados = mysqli_fetch_array($res);
$arrEstados[$dados['cod_estados']] = $dados['nome'];
}
?>Combo box html:
<div>
<select class="selection-2" name="estado" id="estado" onchange="buscar_cidades()">
<option value="">Selecione o Estado</option>
<?php foreach ($arrEstados as $value => $name) {
echo "<option value='{$value}'>{$name}</option>";
}
?>
</select>
</div>Código php trazendo cidades:
<?php
include('conexao.php');
$estado = $_GET['estado'];
$sql = "SELECT * FROM cidades WHERE estados_cod_estados = $estado ORDER BY nome";
$res = mysqli_query($conn, $sql);
$num = mysqli_num_rows($res);
//monto um array de cidades
for ($i = 0; $i < $num; $i++) {
$dados = mysqli_fetch_array($res);
$arrCidades[$dados['cod_cidades']] = utf8_encode($dados['nome']);
}
?>Funcão do js:
function buscar_cidades(){
var estado = $('estado').val();
if(estado){
var url = 'ajax_buscar_cidades.php?estado='+estado;
$.get(url, function(dataReturn){
$('#load_cidades').html(dataReturn);
});
}E a combo box de cidades que no caso não aparecem elas quando seleciono o estado:
<div id="load_cidades">
<select class="selection-2" name="cidade" required="cidade" id="cidade">
<option value="">Selecione o Estado</option>
<?php foreach ($arrCidades as $value => $nome) {
echo "<option value='{$value}'>{$nome}</option>";
}
?>
</select>
</div>
Marcus Vinícius
Curtir tópico
+ 0Posts
27/01/2019
Angelo Rubin
Simulei como ficaria o JS com uma resposta já pronta do servidor (um array de objetos) com as cidades e estados, simplificados e juntos para fins de demonstração, veja se ajuda - https://codepen.io/angelorubin/pen/ZwWXqr?editors=0010
Gostei + 0
27/01/2019
Angelo Rubin
Simulei como ficaria a parte do Javascript/HTML como ja tivesse recebido do servidor (um array de objetos) com as cidades e estados, manipulando o dom diretamente com js (o que não é aconselhável), pois:
Uma ideia melhor seria utilizar um framework como React JS e cia que lida bem melhor com este problema.
Montei um exemplo aqui (manipulando o dom diretamente com JS), veja se ajuda - https://codepen.io/angelorubin/pen/ZwWXqr?editors=0010
Gostei + 0
28/01/2019
Fernando C
http://trocadicas.blogspot.com/2018/11/combo-cidades-estados-sem-ajax.html
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)