Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal, tenho um combobox dinamico com php+json, após selecionar o estado ele exibe as cidades referente a este estado através de um consulta no banco de dados. Bom isto está funcionando normal.
Só que a minha dúvida é a seguinte:
Como eu faço para exibir o estado/cidade através de uma consulta na tabela de usuarios(caso ele ja tenha efeito o cadastro).
Tem como, sem precisar do onchange ?
Página para fazer as alterações
<select name="txtEstadoAL" id="cod_estados">
<option value=""></option>
<?php
$sql = "SELECT cod_estados, sigla
FROM estados
ORDER BY sigla";
$res = mysql_query( $sql );
while ( $row = mysql_fetch_assoc( $res ) ) {
if($row['sigla'] == $res_med['estado_usuario'])
$select = "selected=selected";
echo '<option value="'.$row['cod_estados'].'" '.$select.'>'.$row['sigla'].'</option>';
}
?></select><br />
<strong>Cidade:</strong>
<select name="txtCidadeAL" id="cod_cidades">
<option value=""><?php echo $res_med['cidade_usuario'];?></option>
</select><br />
Código: jQuery
$(function(){
$('#cod_estados').change(function(){
if( $(this).val() ) {
$('#cod_cidades').hide();
$('.carregando').show();
$.getJSON('cidades.ajax.php?search=',{cod_estados: $(this).val(), ajax: 'true'}, function(j){
var options = '<option value=""></option>';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].cod_cidades + '">' + j[i].nome + '</option>';
}
$('#cod_cidades').html(options).show();
$('.carregando').hide();
});
} else {
$('#cod_cidades').html('<option value="">-- Escolha um estado --</option>');
}
});
});
Eu fiz desta maneira, ele exibe o ESTADO+CIDADE e para o usuário alterar ele tem que selecionar o estado novamente e depois a cidade. Está funcionando mas ta com cheiro de POG isto. :thumbsup:
Alguém sabe como posso fazer para arrumar isto ? Ou não tem como ? :(
Eu precisava comparar os dados do banco de dados com o valor do combobox cidade, para deixar a opção automaticamente seleciona, mas eu não consigo, pois p/ mostrar os valores do combobox cidade eu preciso selecionar o estado antes. :thumbsup:
ainda nao entendi :(
devo estar devagar
explica o que o usuario faz, o que acontece...
normalmente você seleciona o estado e o ajax retorna as cidades do estado selecionado
se você quer deixar automaticamente selecionado o estado e a cidade, terá que gravar em session talvez
normalmente você seleciona o estado e o ajax retorna as cidades do estado selecionadose você quer deixar automaticamente selecionado o estado e a cidade, terá que gravar em session talvez
Isto, na hora do cadastro ele faz isso.
Mas vamos supor que ele fez o cadastro, e entra na area para ele alterar os dados cadastrados. Por exemplo como eu vou mostrar a cidade/estado nesse combobox dinamico ?
// Faço a conexão e os select no banco de dados
<label>Nome: <input type="text" name="nome" value="<?php echo $res['nome']; ?>" /></label><br>
<label>Endereço: <input type="text" name="endereco" value="<?php echo $res['endereco']; ?>" /></label><br>
// E a cidade e o estado ?
// O estado eu consigo pois ele traz os valores direto do banco de dados
// mas a cidade não, pois preciso dar um 'onchange'para mostrar os valores e eu comparar
<select name="txtEstadoAL" id="cod_estados">
<option value=""></option>
<?php
$sql = "SELECT cod_estados, sigla
FROM estados
ORDER BY sigla";
$res = mysql_query( $sql );
while ( $row = mysql_fetch_assoc( $res ) ) {
if($row['sigla'] == $res_med['estado_usuario']) { $select = "selected=selected"; } else { $select = ""; }
echo '<option value="'.$row['cod_estados'].'" '.$select.'>'.$row['sigla'].'</option>';
}
?></select><br />
<strong>Cidade:</strong>
<select name="txtCidadeAL" id="cod_cidades">
<option value=""><?php echo $res_med['cidade_usuario'];?></option>
</select><br />Eu faria assim :P
combo.php
<?php
$cod = $_POST['cod'];
$db = new mysqli("localhost","root","...","...");
$cidades = $db->query("select `nome` from `cidades` where `estados_cod_estados` = '".$cod."'");
while($city = $cidades->fetch_assoc())
{
echo '<option value="'.$city['nome'].'">'.$city['nome'].'</option>';
}
?>
a pagina com o ajax que vai fazer a busca ..
<script type="text/javascript" src="../js/jquery-1.5.1.min.js"></script>
<script>
$(document).ready(function(){
$("#cidades").change(function(){
var cod = $(this).val();
$.ajax({
type: "POST",
url: "combo.php",
data: "cod="+ cod,
success: function(data)
{
$("#c").show();
$("#c").html(data);
}
});
});
});
</script>
<select id="cidades">
<?php
$db = new mysqli("localhost","root","...","...");
$est = $db->query("select * from `estados` ");
while($estado = $est->fetch_assoc())
{
echo '<option value="'.$estado['cod_estados'].'">'.$estado['nome'].'</option>';
}
?>
</select><br />
<select id="c" style="display:none;">
</selecT>>
// E a cidade e o estado ?
// O estado eu consigo pois ele traz os valores direto do banco de dados
// mas a cidade não, pois preciso dar um 'onchange' para mostrar os valores e eu comparar
nao precisa de onchange no inicio
você ja tem o estado, e a cidade - vai montar o <select> com os estados e dar while no <select> da cidade
o evento onchange fica para alterção do perfil, nesse caso, o <select> da cidade será alterado pela nova escolha do estado
o cod do Andrey Knupp parece estar correto
Valeu criativade.
Andrey, valeu pelo código, acabei usando para fazer uma outra parada, mas segui a base desse seu código(você sabe) :thumbsup:
Resolvido
Andre eu tenho esse mesmo codigo seu, eu to com um problema nao sei se você resolveu no seu mais na hora de cadastrar ele nao envia o nome do estado e sim o codigo do estado, você conseguiu fazer isso??
Ao invez de ele enviar o estado de Sao Paulo cadastro ele envia o codigo referente a ele como 26,
A cidade eu arrumei agora o estado nao consigui
não entendi
o que você precisa???