Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cláudio Magalhães

Preenche um Select de Cidade de Acordo com o Estado

Recommended Posts

Boa noite Pessoal!
Preciso de uma ajuda que para mim será de grande importância!

Seguinte!

Tenho 2 (dois) campos SELECT
O primeiro eu preencho com os estados
O segundo fica vazio para ser preenchido com as cidades de acordo com o estado que eu selecionar no primeiro.

Segue abaixo os códigos

1 - Parte do código onde está o SELECT que é preenchido com os estados
<label class="label_cad">Estado:</label><br/>
<select required title="Selecione o estado" name="codestado" id="codestado" class="select_cad" style="width:170px;">
<option value=''>SELECIONE...</option>

<?php
$sql_estado = DBRead("tbb_estados","codestado, nomeestado, siglaestado", "WHERE ativo='1' and codestado=29 ORDER BY nomeestado");
$selecionado = "";
if($sql_estado > 0) {
foreach($sql_estado as $linha){
$idestado = $linha['codestado'];
$nomeestado = LimparEspacoMySQL($linha['nomeestado']);
$siglaestado = LimparEspacoMySQL($linha['siglaestado']);

if($idestado == $var_idestado) { $selecionado = " selected";}else{$selecionado = "";}
echo "<option value=$idestado $selecionado>" . $nomeestado . "</option>";
}
}
?>
</select>
Esta parte está 100%! Tudo funcionando certinho



2 - SELECT que será preenchido com as cidades de acordo com o estado selecinado no primeiro SELECT


<label class="label_cad">Cidade:</label><br/>
<select required title="Selecione tipo de logradouro" name="codcidade" id="codcidade" class="select_cad" style="width:250px;">
<option value=''>SELECIONE O ESTADO...</option>
</select>


3 - Código PHP (cidades.ajax.php) no arquivo que eu busco as cidades.


$mysqli = new mysqli("localhost","root","sql","bdspaw");
$codestado = $_REQUEST['codestado'];
$sql_cidades = "SELECT codigocidade, nomecidade FROM tbb_cidades WHERE codestado={$codestado} ORDER BY nomecidade" ;
$query = $mysqli->query($sql_cidades);

$cidades = array();

while ($linha = mysqli_fetch_array($query)) {

$cidades[] = array(
'codigocidade' => $linha['codigocidade'],
'nomecidade'=> $linha['nomecidade'],
);

}


echo( json_encode( $cidades ) );


4 - Código AJAX para preencher o Select de Cidades.

$(function(){
$('#codestado').change(function(){
if( $(this).val() ) {
$('#codcidade').html('<option value="">AGUARDE! LISTANDO CIDADES...</option>');

$.getJSON('cidades.ajax.php?search=',{codestado: $(this).val(), ajax: 'true'}, function(j){
alert($(this).val());
var options = '<option value="">SELECIONE UMA CIDADE...</option>';
var var_selecionado = "";
for (var i = 0; i < j.length; i++) {

options += '<option value="' + j.codigocidade + '">' + j.nomecidade + '</option>';

}

$('#idcidade').html(options).show();

});
} else {

$('#codcidade').html('<option value="">SELECIONE O ESTADO...</option>');
}

});
});


Acontece que já fiz de tudo tentando fazer isso funcionar!
E não consigo!

Alguém aí pode me ajudar ?
Agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Pessoal!
Preciso de uma ajuda que para mim será de grande importância!

Seguinte!

Tenho 2 (dois) campos SELECT
O primeiro eu preencho com os estados
O segundo fica vazio para ser preenchido com as cidades de acordo com o estado que eu selecionar no primeiro.

Segue abaixo os códigos

1 - Parte do código onde está o SELECT que é preenchido com os estados

<label class="label_cad">Estado:</label><br/>
  <select required title="Selecione o estado" name="codestado" id="codestado" class="select_cad" style="width:170px;">
                    <option value=''>SELECIONE...</option>

<?php  
  $sql_estado =  DBRead("tbb_estados","codestado, nomeestado, siglaestado", "WHERE ativo='1' and codestado=29 ORDER BY nomeestado");     
  $selecionado = "";
  if($sql_estado > 0) {  
foreach($sql_estado as $linha){
   $idestado = $linha['codestado'];
$nomeestado = LimparEspacoMySQL($linha['nomeestado']);
$siglaestado = LimparEspacoMySQL($linha['siglaestado']);

if($idestado == $var_idestado) { $selecionado = " selected";}else{$selecionado = "";}
echo "<option value=$idestado $selecionado>" . $nomeestado . "</option>";
}
  }
?>                    
</select>

Esta parte está 100%! Tudo funcionando certinho



2 - SELECT que será preenchido com as cidades de acordo com o estado selecinado no primeiro SELECT

                  <label class="label_cad">Cidade:</label><br/>
                     <select required title="Selecione tipo de logradouro" name="codcidade" id="codcidade" class="select_cad" style="width:250px;">
                     <option value=''>SELECIONE O ESTADO...</option>                    
                   </select> 


3 - Código PHP (cidades.ajax.php) no arquivo que eu busco as cidades.

$mysqli = new mysqli("localhost","root","sql","bdspaw"); 
$codestado = $_REQUEST['codestado'];
$sql_cidades = "SELECT codigocidade, nomecidade FROM tbb_cidades WHERE codestado={$codestado} ORDER BY nomecidade" ;    
$query = $mysqli->query($sql_cidades);

$cidades = array();
  
while ($linha = mysqli_fetch_array($query)) {

$cidades[] = array(
'codigocidade' => $linha['codigocidade'],
'nomecidade'=> $linha['nomecidade'],
);

}


echo( json_encode( $cidades ) );

4 - Código AJAX para preencher o Select de Cidades.

$(function(){ 
$('#codestado').change(function(){
if( $(this).val() ) {
$('#codcidade').html('<option value="">AGUARDE! LISTANDO CIDADES...</option>');

$.getJSON('cidades.ajax.php?search=',{codestado: $(this).val(), ajax: 'true'}, function(j){
alert($(this).val());
var options = '<option value="">SELECIONE UMA CIDADE...</option>'; 
var var_selecionado = "";
for (var i = 0; i < j.length; i++) {

options += '<option value="' + j[i].codigocidade +  '">' + j[i].nomecidade + '</option>';

}

$('#idcidade').html(options).show();

});
} else {

$('#codcidade').html('<option value="">SELECIONE O ESTADO...</option>');
}

}); 
}); 

Acontece que já fiz de tudo tentando fazer isso funcionar!
E não consigo!

Alguém aí pode me ajudar ?
Agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta usar este aqui que não tem erro:

 

http://www.daviferreira.com/posts/populando-selects-de-cidades-e-estados-com-ajax-php-e-jquery

 

Único porém talvez é que vc não consega enviar o valor da cidade para outra tabela por meio de formulario... Pelo menos eu não consegui hehe :)

 

Mas o sistema em si funciona muito bem e bem fácil usar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Cláudio, blz? Segue código:

 

SCRIPTS//////////////////////////////////
<script type="text/javascript">
$(document).ready(function(){
$("select[name=estado]").change(function(){
$("select[name=cidade]").html('<option value="0">Carregando...</option>');
$.post("cidades.php",
{estado:$(this).val()},
function(valor){
$("select[name=cidade]").html(valor).trigger('change');
});
});
});
</script>
//SELECTS////////////////////////////////////////////////////
<select name="estado" onChange="getStates(this);">
<option value="0" selected="selected">Selecione um Estado</option>
<?php
$sel_estado = "SELECT * FROM sua_tabela";
$qr_estado = mysql_query($sel_estado);
while ($row_estado = mysql_fetch_array($qr_estado)) {
?>
<option value="<?php echo $row_estado['ID_ESTADO']; ?>"> <?php echo $row_estado['ESTADO'] ?> </option>
<?php } ?>
</select>
<select name="cidade">
<option value="0" selected="selected" disabled>Escolha primeiro um Estado</option>
</select>
//CONSULTA: cidades.php/////////////////////////////////////////////////////////////////////////////////
<?php
require_once('SUA_CONEXAO');
mysql_select_db(SELECIONAR SEU BANCO);
$sql_cidades = "SELECT * FROM tb_cidades WHERE CODIGO_ESTADO = '".$_POST['estado']."'";
$cidades = mysql_query($sql_cidades);
if(mysql_num_rows($cidades) == 0){
echo '<option value="0">'.htmlentities('Cidades inexistentes').'</option>';
}else{
while($row_cidades = mysql_fetch_assoc($cidades)){
echo '<option value="'.$row_cidades['CODIGO_CIDADE'].'">'.utf8_encode($row_cidades['NOME_CIDADE']).'</option>';
}
}
?>
Qualquer dúvida, só falar, valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Fala Cláudio, beleza? Segue código:

 

SCRIPTS//////////////////////////////////
<script type="text/javascript">
$(document).ready(function(){
$("select[name=estado]").change(function(){
$("select[name=cidade]").html('<option value="0">Carregando...</option>');
$.post("cidades.php",
{estado:$(this).val()},
function(valor){
$("select[name=cidade]").html(valor).trigger('change');
});
});
});
</script>
//SELECTS////////////////////////////////////////////////////
<select name="estado" onChange="getStates(this);">
<option value="0" selected="selected">Selecione um Estado</option>
<?php
$sel_estado = "SELECT * FROM sua_tabela";
$qr_estado = mysql_query($sel_estado);
while ($row_estado = mysql_fetch_array($qr_estado)) {
?>
<option value="<?php echo $row_estado['ID_ESTADO']; ?>"> <?php echo $row_estado['ESTADO'] ?> </option>
<?php } ?>
</select>
<select name="cidade">
<option value="0" selected="selected" disabled>Escolha primeiro um Estado</option>
</select>
//CONSULTA: cidades.php/////////////////////////////////////////////////////////////////////////////////
<?php
require_once('SUA_CONEXAO');
mysql_select_db(SELECIONAR SEU BANCO);
$sql_cidades = "SELECT * FROM tb_cidades WHERE CODIGO_ESTADO = '".$_POST['estado']."'";
$cidades = mysql_query($sql_cidades);
if(mysql_num_rows($cidades) == 0){
echo '<option value="0">'.htmlentities('Cidades inexistentes').'</option>';
}else{
while($row_cidades = mysql_fetch_assoc($cidades)){
echo '<option value="'.$row_cidades['CODIGO_CIDADE'].'">'.utf8_encode($row_cidades['NOME_CIDADE']).'</option>';
}
}
?>
Qualquer dúvida, só falar, valeu.

 

 

 

Olá!

Não funcionou!

 

Percebi que no comando OnChange tem assim [ onChange="getStates(this); ]

 

Porém não encontrei aí a função GetStates():

 

KD ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.