Criando Combo Dinâmico com jQuery e PHP

Nessa video aula iremos aprender a fazer um combo dinâmico, alimentando o select com estados e mostrando dinamicamente com ajax, usando jquery, as cidades de acordo com estado. E de quebra irei indicar para vocês um arquivo .sql com cidades e estados.


Links:

SQL dos Estados e Cidades : http://www.4shared.com/file/TzuhcTEg/sql_cidades_estados.html

Código:

index.php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
    <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);
                      }
                      )
                
             })
          })
          
    </script>
    </head>

    <body>
    <form action="" method="post">
       <select name="estado">
           <option value="0">Escolha um Estado</option>
            <?php
             mysql_connect("localhost", "root", "");
             mysql_select_db("mxmasters");
             
             $sql = "SELECT * FROM tb_estados ORDER BY nome ASC";
             $qr = mysql_query($sql) or die(mysql_error());
             while($ln = mysql_fetch_assoc($qr)){
                echo '<option value="'.$ln['id'].'">'.$ln['nome'].'</option>';
             }
          ?>
           
        </select>
       
        <select name="cidade">
           <option value="0" disabled="disabled">Escolha um Estado Primeiro</option>
        </select>
    </form>
    </body>
    </html>

cidades.php

    <?php

    mysql_connect("localhost", "root", "");
    mysql_select_db("mxmasters");

    $estado = $_POST['estado'];

    $sql = "SELECT * FROM tb_cidades WHERE estado = '$estado' ORDER BY nome ASC";
    $qr = mysql_query($sql) or die(mysql_error());

    if(mysql_num_rows($qr) == 0){
       echo  '<option value="0">'.htmlentities('Não cidades nesse estado').'</option>';
       
    }else{
       while($ln = mysql_fetch_assoc($qr)){
          echo '<option value="'.$ln['id'].'">'.$ln['nome'].'</option>';
       }
    }

    ?>




Se o conteúdo foi relevante para você, e desejar, você pode incentivar fazendo uma doação.

129 thoughts on “Criando Combo Dinâmico com jQuery e PHP

  1. Olá, pode me dar uma ajuda com seu codigo? Eu faço a leitura do estado com uma combobox, retorna os municipios de minha tabela, so que eu quero imprimor formatado em uma linha abaixo os outrps campos da minha tabela (Nome, endereco, telefone, email) (Minha tabela vc escolnhe o estado e depois o municipio e quero que imprima na tela o endereco e dados do meu representante naquele municipio, eu chego ate os municipios mas nao conssigo imprimir o restante na tela.

    (script)

    $(document).ready(function(){

    $(“select[name=estado]”).change(function(){
    $(“select[name=municipio]”).html(‘Carregando…’);

    $.post(“cidades.php”,
    {estado:$(this).val()},
    function(valor){
    $(“select[name=municipio]”).html(valor);
    })
    })

    $(“select[name=municipio]”).change(function(){

    $(“select[name=id]”).html(‘Carregando…’);
    $.post(“endereco.php”,
    {municipio:$(this).val()},
    function(valor){
    $(“select[name=id]”).html(valor);
    // alert(valor);
    }
    )

    });
    });

    endereco.php

    Se eu usar o alert ele mostra a msg com o endereco, mas nao consigo imprimir na pagina os dados.

    Agradeço sua ajuda, sou novo ainda em php e nao saco muito de JavaScript.

  2. Codigo do endereco.php

    mysql_connect(“host”, “user”, “senha”);
    mysql_select_db(“banco”);

    $id = $_POST[‘municipio’];

    $sql = “SELECT * FROM blh WHERE id = ‘$id’ ORDER BY estado ASC”;
    $qr = mysql_query($sql) or die(mysql_error());

    if(mysql_num_rows($qr) == 0){
    echo $id;

    }else{
    while($ln = mysql_fetch_assoc($qr)){
    echo $ln[‘endereco’];
    }
    }

  3. Ola… O problema anterior foi resolvido, agora peço uma ajuta para um item, no combobox quando eu seleciona o estado e vem a lista dos municipios que queria que o municipio ja carregasse automaticamente o primeiro endereco da lista, o porque: Tenho estado que so tem um municipio e o problema é que ao carregar apenas este municipio eu nao conssigo clicar nele para seleciona-lo para carregar o endereco, como eu faria para resolver isso no ajax?

    1. Janio, basta vc adicionar antes de listar os municípios, um campo vazio, assim vc é sempre forçado a escolher um município, acionado então change

    2. Olá Janio, vi sua duvida aqui e gostaria de saber como vc resolveu? Pois estou com um problema igual, quando seleciono o estado, aparece a cidade, depois queria que aparecesse o bairro, mas nao está aparecendo

  4. Olá David, muito boa a sua VA, eu fiz do mesmo jeito que voce mostra na video aula, e estar funcionando perfeitamente nos navegadores Firefox, Google Chrome e opera, porém, no IE8 não estar mostrando as cidades quando seleciono os estados, como faço pra resolver esse problema? Desde já agradeço!

    1. Antonio, o código que realiza a pesquisa no banco de dados, q monta os options, não pode ter nenhum código html, sem ser o option.

  5. Pode disponibilizar esse script para download ?
    Digitei pelo vídeo mas acho que errei alguma coisa e não consigo encontrar onde errei.

      1. Obridado. O arquivo cidades.php estava faltando um parenteses. Utilizei o site comparemyfiles para achar a diferença. Agora funcionou.

  6. Ao colocar os arquivos no site ocorre um problema de acentuação, quando testo em localhost não ocorre o problema. Após adicionei Todos os campos são obrigatórios. As palavras com acento e cedilha ficam esquisitas. Quando coloco charset=utf-8 a acentuação aparece correta mas os Estados acentuados aparecem esquisitos.

  7. Olá David,
    Parabéns pela excelente didática e conhecimento. Copiei o código disponibilizado para certificar-me que não havia esquecido algo. Não aparece a relação dos estados, somente “Escolha um estado”. Você poderia me ajudar?
    P.S. Criei o banco exatamente como mxmasters e as tabelas foram criadas pelo IMPORT com sucesso.

    Aguardo retorno.

  8. Olá David,
    Seu código exige alguma configuração específica do PHP?
    Minhas configurações estão:
    a)Extensão Mysql e Mysqli habilitadas
    b)Easy PHP versão 5.3.8.0

    1. Joel, não precisa de configurações extras. Primeira coisa é vc ver o código fonte no navegador, e aonde está os estados, verificar se tem alguma mensagem de erro

      1. David, primeiramente obrigado pelo pronto retorno. Observando o código no navegador Firefox posso observar que o erro está na linha de código abaixo em ‘.$ln[‘nome’].’ suponho pela cor “preta” diferente das demais linhas de código PHP. Isso faz com que a chave de fechamento do while e do php não sejam reconhecidas. Mas, sinceramente, não consigo ver o erro de sintaxe.

        Posso lhe enviar a tela se for preciso para sua ajuda.

        echo ”.$ln[‘nome’].”;

          1. David, você pode orientar a melhor forma de postar? Verifiquei e constatei que o problema está na chamada da função responsável pela atualização do combo cidades. O combo estado está ok.

  9. ola, muito bom seu código, meu ajudou perfeitamente para carregar os dados como eu queria, mas ficou uma duvida, vc pode me ajudar?
    estou querendo gravar as informações retornadas no banco de dados, o primeiro select eu consigo passar o valor selecionado para o banco, mas do segundo select não consigo… consegue me dar essa força? valew

      1. Olá, poderia disponibilizar o código completo por favor? Parabéns pelo post e pelo compartilhamento de informação!

          1. Obrigado, mas eu estava solicitando o código que foi indicado pelo usuário João havia solicitado para gravar em banco, se puder enviar, agradeço

  10. David,
    Ao gravar no banco observei que é o “id” que é gravado não o nome da cidade ou estado. Resolvi para o estado, você poderia me ajudar no código para gravar a cidade e não o seu “id”?

    Obrigado.

    1. Joel, o ideal é q na sua tabela só gravasse o ID da cidade, pq com ela vc consegue recuperar o nome da cidade e nome do estado, exemplo:

      As tabelas :

      TABELA estados
      id_estado
      nome_estado

      TABELA cidades
      id_cidade
      nome_cidade
      id_estado

      TABELA clientes
      id_cliente
      nome_cliente
      email_cliente
      id_cidade

      Veja que na tabela clientes tenho uma referencia da tabela cidades, na tabela cidades tenho uma referencia da tabela estados. Para recuperar esses valores pode utilizar o INNER JOIN. Veja que poupo espaço no banco de dados, pq só gravo o ID. Um exemplo, como recuperar os valores da tabela cliente, e nome da cidade e estado:

      $sql = "SELECT * FROM clientes INNER JOIN cidades ON clientes.id_cidade = cidades.id_cidade INNER JOIN estados ON cidades.id_estado = estados.id_estado"
      $query = mysql_query($sql);
      while($row = mysql_fetch_assoc($query)){
         echo 'Nome : '.$row['nome_cliente'].'<br />';
         echo 'Cidade : '.$row['nome_cidade'].'<br />';
         echo 'Estado : '.$row['nome_estado'].'<br />';
      }
      

      É muito importante estudar SQL, e tbm sobre normatização de banco de dados. Sobre SQL, vc poderá manipular dados com mais facilidades, independente da linguagem q vc for usar, como php, java, etc. Sobre normatização de banco de dados, vc vai aprender a modelar suas tabelas pra q elas fiquem otimizadas.

  11. Boa tarde, video aula perfeita.

    Por favor me ajude gostaria que na hora que ele escolhece a cidade, fosse para uma outra pagina ex saopaulo.php

    Me Ajude

    Obrifado DAvid

    1. Vc pode fazer usando metodo change para disparar ação:

      $("#cidades").change(function(){
          var valor_cidade = $(this).val();
          window.location = cidade;
      
      })
      

      No caso o valor que está em value , da tag option, seria o nome da página q seria enviado.

        1. Claudio, o eventochange ele vai executar algo quando muda a seleção de algum item no select.

          $(&quot;select[name=estado]&quot;).change(function({
          
          });
          

          Se fosse descrever esse trecho de código ficaria assim:

          – Selecione o elemento select que tem name de estado.
          – Atribui o evento change a esse elemento, então quando selecionar um item desse elemento, vai disparar uma ação.
          – Executa uma função anonima, e dentro da função fará as ações necessárias para fazer a busca em Ajax

          1. Ok David, porém o que não entendi mesmo é onde incluo o código que você descreveu em responsa ao Rafael, e como faço para que quando clicar em uma cidade, leve a uma página em php. Por exemplo, ao clicar em São Paulo, abre a página saopaulo.php com as informações relevantes.

            Mais uma vez, obrigado.

          2. Claudio, agora eu q não entendi. O q vc gostaria de fazer? É clicar num link, e abrir a página em ajax, é isso?

          3. Desculpe David, não soube explicar.
            Veja este exemplo que só tem os estados:
            http://www.stadiumsports.com.br/representante

            Seria isso, mas com as cidades.

            Quando clicar no nome da cidade, quero que abra as informações dos representantes da referida cidade, abaixo, como no link do exemplo, porém não sei onde incluo essas informações (os representantes).

            Obrigado pela atenção.

          4. Nesse exemplo Claudio, não usa ajax, é um formulário comum, passa a informação via POST pra própria pagina, e ai faz a consulta.

            Mas pode fazer da mesma forma q foi feita na videoaula. Vc resgatar a informação do select q será o ID da cidade ou código da cidade, envia pra uma pagina pra pesquisar, e retorna as informações com titulo e link

            Exemplo, com comentarios pra realizar a pesquisar

            http://pastebin.com/DhBweDk9

            Exemplo do arquivo representantes.php q vai realizar a pesquisar e retornar os representantes

            http://pastebin.com/bBxH0Bi4

            Seria basicamente isso, claro, vc vai ter q adaptar as suas necessidades.

  12. Boa tarde, David.

    Meu problema é o seguinte: tenho vários campos na mesma table como, tipo, categoria, cidade, bairro, entre outros.
    Como eu faço para que a combobox passe o valor sem perder um valor. Deixa eu explicar melhor. Tipo – alugar, categoria – casa, cidade – Sao Paulo, bairro – centro. O que eu quero, é que ao chegar na ultima combo, os valores estejam na mesma relacionados conforme estão armazenados no bd.

    Poderia me ajudar? Estou tentando a um tempo já, e não consegui. Caso eu consiga antes de seu retorno eu posto a solução, pode servir para outra pessoa.

    Abraços

        1. Relação ao jQuery tá certo, tanto q está resgatando tudo. Vc quer q quando faça a pesquisa, q vai atualizar a página, vc quer q fique marcado. A primeiro é vc troca o método post pelo get no formulário, pq se vc for pensar em paginação, vc passar pesquisa vi get.

          Depois basta verificar em cada item, o valor q está na URL, e fazer a seleção , exemplo:

            <select name="categoria">
           <?php 
           if(isset($_GET['categoria']) && !empty($_GET['categoria'])){
               $query = mysql_query("SELECT * FROM categorias");
                while($row = mysql_fetch_assoc($query)){
                        $selected = ($_GET['categoria'] == $row['id_categoria']) ? ' selected="selected"' : '';
                        printf('<option %s value="%s">%s</option>', $selected, $row['id_categoria'], $row['categoria']);
                    }
          }
          
          ?>
          

          A partir dai vc vai fazer a mesma coisa nos outros campos.

          1. Fala David, tudo na paz?

            Em relação ao seu código, ele funcionaria se eu tivesse uma tabela para cada campo da consulta, e todos relacionados em uma outra tabela. Acho que isto seria o mais correto, pois a tabela ficaria normalizada. Mas como a minha tabela não está assim, acho que fica mais complicado. Postei os codigo da sql de cada combo para vc analizar e ver se existe a possibilidade de eu conseguir fazer o que quero. Caso contrário, terei que modificar o banco e todas as páginas já feitas.
            Até mais, abraços.

  13. Fala David,

    Usei o código que vc passou e o resultado gerado é idêntico o resultado do código que eu já utilizava.

    Vou continuar tentando aqui.

    Obrigado por tentar ajudar.
    Abraços

    1. Marcos, a ideia será essa mesmo, vc listar todos os itens de um grupo, e e colocar ele como selecionado. O ideal realmente é vc refazer essa modelagem, pq dessa maneira vc terá muito conteúdo redundante

  14. David, Boa Tarde.

    Excelente Vídeo Aula, fiz exatamente como você explicou na VA, porém estou usando em um formulário para que possa receber por e.mail, mas no lugar de cidade e estado eu recebo apenas o “id”, como pode ser feito para que eu possa receber o nome do Estado e da Cidade?
    Desde já, muito obrigado pela ajuda. Abraços

    1. Falcão, vc apenas irá fazer a consulta nas tabelas de cidade e estados, como vc já tem os ID’s, fica facil retornar os nomes.

      1. David, muito obrigado pela resposta, mas acho que nos últimos dias eu acabei com meus últimos neurônios que restavam….rs…rs… e não estou conseguindo raciocinar direito, seria possível um pequeno exemplo ou uma pequena direção para que eu possa fazer isso? Desde já, mais uma vez muito obrigado pela ajuda. Abraços

      2. David, voce não tem noção de como estou precisando de um exemplo destes pra mim estou quebrando minha cabeça e não consigo resolver isso, quando clico para enviar o formulario e pcadastrar, no banco aparece as ids e não os nomes, o que posso fazer para que ele guarde o nome dos estados e não a id deles aguardo

        1. adeilson, se vc tem o ID, basta fazer a consulta na tabela, e retornar esse valor. O ideal era vc apenas guardar esse ID no banco de dados, e usando Join vc resgatar esse valor.

  15. Gostaria de saber, como alimentar esses combos em uma tela de alteração, ou seja, como carregar a tela de alteração com os dados gravados no banco de dados.

    1. Junior, e Falcão, vou postar um exemplo de como poderia ser feito:

      <?php 
      	
      	//Resgata id do usuário da URL
      	$idUsuario = $_GET['id'];
      	//Executa o SQL para selecionar usuário especifico
      	$query = mysql_query("SELECT * FROM usuarios WHERE idusuario = '$idUsuario'");
      	//retorna os itens em array associativo
      	$row    = mysql_fetch_assoc($query);
      	
      	//SQL para listar os estados
      	$queryEstado = mysql_query("SELECT id_estado, nome_estado FROM estados");
      	
      	//SQL para listar as cidades, filtrando pelo estado
      	$queryCidade = mysql_query("SELECT id_cidade, nome_cidade FROM cidades WHERE id_estado = '".$row['id_estado']."'");
      	
      ?>
      
      <select name="estados" id="estados">
      	<?php while($rowEstado = mysql_fetch_assoc($queryEstado)) {?>
      	<?php $selected = ($rowEstado['id_estado'] == $row['id_estado']) ? ' selected="selected"' : ''?>
      	<option <?php echo $selected?> value="<?php echo $rowEstado['id_estado']?>"><?php echo $row['nome_estado']?></option>
      	<?php }?>
      </select>
      
      <select name="cidades" id="cidades">
      	<?php while($rowCidade = mysql_fetch_assoc($queryCidade)) {?>
      	<?php $selected = ($rowCidade['id_cidade'] == $row['id_cidade']) ? ' selected="selected"' : ''?>
      	<option <?php echo $selected?> value="<?php echo $rowCidade['id_cidade']?>"><?php echo $row['nome_cidade']?></option>
      	<?php }?>
      </select>
      
  16. Eu copiei o código do site e todos o script de DB.Ao montar o formulário, a combobox Estado é carregada corretamente, mas ao selecionar um dos estados a combobox Cidade não é populada. Voce sabe onde eu possa estar errando ?
    Obrigado

    1. Ronald, o arquivo que retorna as cidades, só pode ter de tag html, o option, não pode ter mais nenhuma outra.

  17. Olá, David parabéns pela vídeo aula.
    Estou com uma duvida se vc puder me ajudar agradeço.
    É o seguinte tenho uma tabela financeira que tem campo despesa e outro receita e queria fazer a filtragem
    da seguinte maneira quando eu selecionar o campo receita mostrasse só as pessoas relacionado as receitas e da mesma maneira despesas
    ate aí tudo bem consigo fazer, mais queria realizar a filtragem tb da seguinte maneira com a opção no select despesa e receitas os 2 juntos mostrasse todos os resultados entendeu?

    1. Olá Saulo. Você pode criar no seu select a terceira opção, vamos dizer que é assim:

      <select name="tipos">
        <option value="despesas">Despesar</option>
        <option value="receitas">Receitas</option>
        <option value="despesas_receitas">Despesas e Receitas</option>
      </select>
      

      Veja que no option eu tenho 3 valores, e são com esses três valores que iria trata na hora de pesquisar no PHP, para retornar os campos:

       $tipo = $_POST['tipo'];
       switch($tipo){
        case 'despesas':
      
        break;
        
        case 'receitas':
      
        break;
      
        case 'despesas_receitas':
      
        break;
      }
      

      Dessa forma dá pra fazer como quer, vc tem 3 condições no select, e no php vc trata o que irá retornar.

  18. Estou com pequeno problema na página acima. Vc poderia me ajudar a solucionar?
    Problema.
    Quando envio o formulario ele imprime na tela (em um flash)todas as cidades (do estado em questão) antes de gravar no BD.

    Obs: Não sou profissional.

    Aguardo retorno

    Obrigada

    Veralúcia

  19. Boa tarde, David

    Gostaria que pudesse me tirar uma dúvida rápida.
    Fiz um formulário com select, e quando escolhe um item abre um campo input, entretanto só funciona no firefox e internet explore e infelizmente no chrome não funciona.
    Utilizei javascript;

    $(document).ready(function(){
    $(‘#conteudo’).hide();

    $(‘#mostrar’).click(function(event){
    event.preventDefault();
    $(“#conteudo”).show(“slow”);
    });

    $(‘#ocultar’).click(function(event){
    event.preventDefault();
    $(“#conteudo”).hide(“slow”);
    });
    $(‘#ocultar1’).click(function(event){
    event.preventDefault();
    $(“#conteudo”).hide(“slow”);
    });
    $(‘#ocultar2’).click(function(event){
    event.preventDefault();
    $(“#conteudo”).hide(“slow”);
    });
    });

    Bem simples mas não funciona no chrome ou não reconhece o javascript, poderia me orientar como resolve-lo.

    Abraços

  20. Olá David,

    na minha ignorância não consigo resolver, fiz o exemplo de como vc mostrou no video mas na hora de trazer o resultado $().html(), depois de fazer a consulta no banco ele mostra a pagina toda do html, onde estou erando.

    veja o link

    http://sgdtec.web102.f1.k8.com.br/ns/dealer/painel.php?go=users/novo-user

    selecione o regional

    veja este link

    http://sgdtec.web102.f1.k8.com.br/ns/dealer/painel.php?go=rede/novo-conces

    ao sair do campo cnpj faço uma busca no banco para ver se ja está cadastrado, veja o resultado que está no alert();

    você poderia me ajudar.

    favor não divulgar o link na sua resposta.

    Ademir

  21. Estou com o seguinte problema: implementei o código e o banco de dados. Ele funcionou perfeitamente no localhost. Quando foi para o servidor não funcionou. Para na linha “carregando ” e não carrega a cidade. Testei a conexão com o banco de dados e não há problema aparente. Tem ideia do que está ocorrendo? Pode ser diferença no php do servidor?

    1. Seria da mesma forma, apenas iria repetir o codigo javascript. Exemplo, temos 3 itens: Estado, Cidade, Bairro. Onde vc escolhe o estado, mostra a cidade, vc escolhe a cidade , mostra o bairro. Teria dois código javascript, uma para pegar o valor de estado, e atribui o valor do resultado a cidade, e outro para pegar o valor de cidade, e atribuir o resultado ao bairro

  22. Amigo, na minha máquina ta funcionando perfeito, mais quando coloco no site on-line não funciona. O que pode ta acontecendo?

    1. Wescley, verifique os dados de conexão. E utilize o firebug ou inspetor do chrome pra verificar se está enviado a informação para página outra página para consulta.

    1. Elias, não entendi, vc tá com dificuldade de entender como fazer o relacionamento da tabela estados e tabela q vai ter q gravar?

  23. Olá david, estou com um problema ao tentar pegar o ID do primeiro select, andei testando aqui e ele só está voltando no segundo select o id do primeiro estado, consequentemente só aparece as cidades daquele estado, alguma ideia do que poderia ser isso? obrigado.

  24. parabens pela aula! Gostaria de saber como faço para pegar os dados desses forms e enviar um relatorio por email.

    grato desde ja!

    1. Vc vai apenas submeter esses dados via formulário pra uma pagina, como vc tem o ID da cidade, e do Estado, vc vai pesquisar nome banco de dados essas informações pra pegar assim o nome da cidade e estado.

      1. eu to colocando assim. não sei o que estou fazendo de errado que ele nao está listando as do estado de são paulo.. quando eu puxo outro estado e naquele estado somente tem uma cidade ele puxa certo. agora no estado de são paulo tem mais franquia e ele somente puxa uma..

        codigo

        $estado = $_POST[‘estado’];
        $sql = mysql_query(“SELECT id_loja, foto, loja, texto, mapa FROM lojas WHERE estado = ‘$estado’ LIMIT 1 “)
        or die(mysql_error());
        if(@mysql_num_rows($sql) <= '0') echo 'Nenhuma franquia foi encontrada’;
        else{
        while($res=mysql_fetch_array($sql)){
        $id_loja = $res[0];
        $foto = $res[1];
        $loja = $res[2];
        $texto = $res[3];
        $mapa = $res[4];

        1. @Reinaldo, vc verificou console do chrome ou no firebug do firefox, se ele está enviando as informações corretas via ajax?

  25. Olá,David
    Teria como colocar uma opção no select
    quando selecionar um estado no outro select retornar todas cidades referente ao estado selecionado e ficar a opção de selecionar uma cidade especifica ou também ter uma opção com todas as cidades e noresultado listar todas as cidades referete ao estado selecionado
    se o usuário não selecionar uma cidade? desde já agradeço David.

  26. olá, gostei muito da aula.. fiz certinho e funciono tudo belezinha. mas como eu faço para quando eu selecionar a cidade eu clico em listar e ele me lista somente aquela cidade que eu selecionei? fico no aguardo pois estou precisando..

  27. Montei da forma que está na videoaula e funciona.

    Agora quando chamo por include o form de cadastro (que possui as combos estado e cidade) dentro de outra pagina, daí ele não funciona. suspeita do que pode ser?

    1. Dilson, veja em Ferramentas do Desenvolvedor, se aparece algum erro do Javascript, pra ver se tá pegando o elemento correto.

  28. Olá, muito bom.
    Porém encontrei um problema, Por exemplo se eu selecionar o Estado MT não acontece nada no campo cidade, preciso clicar em outro Estado e depois clicar novamente para o estado que quero e assim funciona o select da cidade.

    Preciso clicar 2 vezes no estado para funcionar.

    O que poderá ser?

    1. Veja no inspetor de elemento do Chrome, na aba NetWork, e veja se está ocorrendo a requisição em ajax, e o q retorna.

  29. David, primeiramente parabéns pelas dicas.

    Implementei no meu site e tenho uma dúvida, quando recupero os dados do banco
    para mostrar na tela, no combo de UF consigo posicionar na UF cadastrada, porém para o município,
    não consigo executar a rotina que carrega quando do change do estado.

    Não sei se ficou claro. Desde já agradeço a sua atenção

  30. Davi, em primeiro lugar gostaria de parabenizá-lo pela vídeo aula… Muito boa mesmo. Em segundo lugar, se não for incomodo, você poderia sanar uma dúvida?
    Eu tenho uma tabela chamada produtos no bd apenas com id_produtos e nome_produtos…
    Fiz o select e tá puxando as informações certinho..
    A dúvida é:
    Digamos que tenho lá no banco os itens: Refrigerante (id:1), Celular(id:2) e teclado(id:3)..
    Como eu posso fazer (creio que seja js/jquery) para que quando eu selecionar um item, por exemplo eu selecionei o refrigerante… ele me abre um form modal e dentro tenha a página para cadastro de refrigerantes? (o php do cadastro tá ok, eu sei fazer.. tipo cad_refrigerantes.php)
    e outra dúvida é: do lado do combobox que pega meus produtos e tal, eu criei um link para adicionar novos produtos, caso nao exista no banco… como ja fazer isso tbm com o form modal para cadastrar novos produtos? obrigado

  31. Oi David.

    Parabéns. Ótima aula.

    Estou com um problema : como faço para gravar a cidade no BD mysql? Eu adaptei para meu caso e o estado grava, mas a cidade não.

    Por favor, qualquer ajuda é bem-vinda.

    Grato.

    1. Pedro, vc tá conseguindo recuperar o valor vindo do formulário ? Dá um print_r($_POST), pra vê com está vindo via FORM

  32. Vou melhorar minha explicação anterior.

    Eu adaptei para meu caso : Eu tenho uma tabela Cliente em que contem nome e cpf ds Clientes.

    Numa tela, eu quero puxar o nome do Cliente e do lado, vir o CPF deste. E GRAVAR TUDO NUMA TABELA DO BD chamada ‘EMPRESA’. Pois bem eu faço a seleção e grava Cliente, mas quando puxo CPF dá erro dizendo que o campo está vazio(NULL).

    Pode me ajudar?

  33. Feliz Natal David !!!!! Já “montei” a Combobox e consigo fazer uma pesquisa dos pontos importantes das cidades selecionadas pela Combo, mas, só consigo fazer UMA busca porque a Combo fica “zerada” e preciso selecionar o estado e a cidade tudo de novo para fazer uma nova busca.
    Tem como manter selecionados os select até escolher um novo estado e/ou nova cidade sem ter que escolher novo estado e/ou cidade a cada pesquisa?
    Você já me ajudou MUUUITO com as video aulas. Só falta esse problema para concluir o meu site. Mesmo que não me responda, já estou muito grato à você pelo seu site.
    PS: Não entendo nada de código fonte. Estou usando os recursos do Developer Toolbox do Dreamweaver.
    GRATO POR TUDO!!!!!!!

    1. @Claisen, como pra fazer a pesquisar, vc provavelmente terá q dá reload na página , o q vc pode fazer, é tentar guardar essa seleção numa session

  34. A minha questão sumiu!
    Se eu disse algo errado, peço 1000 perdões.
    Com a minha depressão crônica de 17 anos posso muito bem ter escrito algo inadequado sem querer. Jamais diria algo contra este site que tem me ajudado tanto.

    Humildemente peço perdão.

    Claudio Endo (Claisen)

    1. @Claisen, sua questão não sumiu, era q estava tirando uns dias pra descansar, ai nem acessava o site. Agora to vendo os comentários, então não se preocupe, vc não fez nada de errado 😀

  35. David, ainda estou trabalhando ainda localmente e estou com um probleminha de acentuação.
    No lugar de estados, meu BD é grupos e no lugar de cidades, meu BD é subgrupos.
    Quando cadastro um grupo que a palavra tem algum acento o combo subgrupos não retorna os resultados.
    Todas as minhas páginas estão com o charset=iso-8859-1.
    Obrigado por enquanto.

  36. Olá David, Feliz Ano Novo, tudo bem?

    Eu estou procurando uma solução para um problema e caí no seu site. Muito bacana inclusive, porque lendo fui tendo novos insights, mas agora estou com uma dúvida.
    No meu caso, estou fazendo uma tela em que eu tenho uma listagem de cursos em que, com determinadas opções (por isso a combobox) eu teria as vantagens para meu cliente. Enfim, até aí tudo legal, mas o que eu quero fazer e até já vi alguém com a mesma dúvida (mas foi solucionada) é de que ao selecionar a opção, ele me imprima um determinado resultado. POr exemplo: [selecione o curso] = o cara vai e seleciona “violão” e na caixa ao lado habilita [escolha o período] = daí o cara seleciona por exemplo “violão mensal” e no corpo da página imprime o valor do curso e as informações.

    Minha dúvida é: Quando chega na parte que ele tem que imprimir o banco de dados na tela com as informações de resultado (no corpo da página) eu não estou conseguindo. Pode me ajudar?

  37. Boa noite David!
    Muito bom o combo dinamico, mas fiquei com uma duvida… fiz tudo utilizando o charset=UTF-8, mas quando recuperei os dados pelo mysql o mesmo veio com os caracteres aparecendo tipo umas interrogações, o que poderia ser? Poderia me explicar melhor isso sobre essas interrogações que aparece em caracteres acentuados? Porque ja tentei mudar varias vezes e continua do mesmo jeito 🙁
    Tipo quando utilizo UTF-8, no mysql utilizo UTF-8 também?

    1. Tente mudar o charset do arquivo, usando no notepad++, vc acessa Formatar > Codificação utf-8(sem bom), e depois salve.

  38. David, bom dia. ha um tempo tenho utilizado tua VA pra poder montar um form dinamico só que para TIPO, MARCA, MODELO, CORES, etc… (mais alguns combos), vi que já postou aqui e em outros locais respostas para isto, inclusive para gravar estes dados em um banco ou enviar por email, mas será que poderia postar o codigo completo (utilizando seu exemplo de cidades mesmo) sendo que eu pudesse gravar estas informações no BD relacionadas à um usuário, e depois enviar isto por e-mail? Não quero abusar, se preferir posso enviar os meus códigos em pvt pra facilitar, mas creio que minha dúvida possa ajudar outros. Mais uma vez, parabéns pelo trabalho e compartilhamento de informação.

  39. David, boa noite. Parabéns por essa video aula, ajudou bastante.

    Queria uma ajuda que seria o seguinte:

    Os dados que estão sendo enviados para o meu banco de dados são os números dos values e não o texto em sim. Por exemplo:

    Goiás value = 9 – Aparecida de goiânia value = 2015.

    está levando os values que estão ai e não os nomes das federações. Se pudesse me ajuda, ficaria grato. Vlw.

    1. Guilherme, na página vc recebe os dados do formulário, com código, vc pode pesquisar no banco de dados, e assim retornar o nome, antes de inserir no banco de dados

  40. Tenho uma dúvida:

    Tem como, em vez de usar SELECT, usar CHECKBOX ?
    Exemplo:
    Primeiro campo é do tipo CHECKBOX, ou seja, posso selecionar várias opções.
    Segundo campo é do tipo SELECT, onde quero que preencha com informações do CHECKBOX.

    Exemplo:
    Primeiro campo: checkbox marcado: Paraná e Santa Catarina
    Segundo campo: Carregar municípios dos dois estados.

    É possível ?

    1. Henrique, sim é possível, só q algo invés de usar o evento change, vc usa o click, input de ckeckbox. Exemplo, q form tem o Id de #frmCadastrar

       $("input[type=checkbox]").click(function(){
          //resgata os campos do formulário
          var campos_formulario = $("#frmCadastro").serialize();
      
          //Aqui faria o resto do código da videoaula
       });
      
  41. É possível usar no SELECT o MULTIPLE ?
    Selecionar mais de um estado para carregar os municípios dos estados selecionados ?

  42. David, estou com problema de acentuação somente quando coloco on line, localmente funciona bem. Você me disse em post anteriores que as tabelas e o bd tem que estar com a mesma charset no site. Estou trabalhando com o Europeu Ocidental (ISO 8859-1) e meu banco de dados está com utf8. Como faço para mudar meu BD para esta charset. Não achei com este nome, aparece vários como Europeu do Oeste, Central mas o Ocidental não achei. Você pode me ajudar.
    Será que isso resolverá o problema de acentuação???

  43. David, consegui resolver a acentuação acrescentando o htmlentities no echo que retorna o valor, como por exemplo
    echo ”.htmlentities($ln[‘bairro’]).”;
    Agora para que meu filtro fique perfeito ficou faltando apenas um detalhe:
    Tenho 4 combos: região – bairro – categoria – subcategoria que resgata valores de uma mesma tabela.
    Gostaria que no combo que aparece a subcategoria, que esta seja uma junção da informação escolhida nos combos bairro e categoria e não somente da categoria como é padrão. Tem como fazer isto a partir destes combos.

    1. Sim, é possivel. Basta vc recuperar os itens já selecionado: var select_1 = $(“#select_1 option:selected”).val();

  44. Parabéns pelo código. Fiz a implementação e funcionou perfeitamente. Alterei para Estado, Cidade e Bairro, ficou tudo ok. Está carregando um após o outro perfeitamente. O problema é que, caso eu queira mudar o Estado depois de ter feito todas as seleções, o bairro continua selecionado vinculado à cidade anterior. Gostaria de saber como zerar a seleção do bairro depois de ter feito tudo e queira mudar a cidade. Desde já agradeço.

  45. Boa tarde. Consigo fazer tudo certinho. Uso para outras coisas também. Mas pintou uma dúvida. Digamos que eu tenha um botão duplicar campos, onde eu quero selecionar outro estado e cidade, ou vários. Como eu faria? Duplico, mas ao selecionar o primeiro estado, todas as os selects de cidade são preenchidos com o valor do primeiro. Tens uma dica?

    1. Robson, isso acontece, pq na hora de adicionar, vc tá usando a mesma referencia pra setar a cidade. Então vc precisa colocar algum identificador, algum Id, pra q cada cidade corresponda um bloco de estado especifico.

Deixe uma resposta para Guilherme Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *