Ir para conteúdo
Fórum Script Brasil
  • 0

problemas com combobox


Gnuclear

Pergunta

Estou tentando fazer um combo box onde o usuario informa primeiro o estado, informado o estado, no box seguinte (cidade) são carregadas apenas as cidades desse estado, e depois de informar a cidade, são listados no box seguinte apenas os bairros dessa cidade.

Peguei um tutorial e tentei adaptar ele a minha realidade. Mas o código não está funcionando.

endereço do tutorial http://www.gilbertoalbino.com/criar-combo-...com-jquery-php/

vejam como está:

formulario:

<select name="estados" id="estados" onchange="buscacidades('xmlcidades.php','cidades');">
          <option selected="selected" value="nada">-- Estados --</option>
          <option value="PB">PARA&Iacute;BA</option>
          <option value="AL">ALAGOAS</option>
          <option value="CE">CEAR&Aacute;</option>
          <option value="PE">PERNAMBUCO</option>
          <option value="RN">RIO GRANDE DO NORTE</option>
          <option value="SE">SERGIPE</option>
        </select>
        <br />
        <select name="cidades" id="cidades" onchange="alert(this.value);" >
          <option>-- Escolha um Estado --</option>
        </select>
        <br />
        <select name="bairros" id="bairros">
          <option>-- Escolha uma Estado --</option>
        </select>
o código do java script:
jQuery(document).ready
(
    function() 
    {
        comboDinamico("estados", "cidades", "bairros");
            }
);

comboDinamico = function(estados, cidades, bairros) {

    var estado = document.getElementById(estados);
    var cidade = document.getElementById(cidades);
    var bairro = document.getElementById(bairros);

    $(estados).load('localizacoes.php?tipo=estado');
    $(estados).change(
        function() {
            if($(this).val() == 0) {
                alert('Você precisa informar o ESTADO!');
                $(this).focus();
            } else {        
                $(cidades).load('localizacoes.php?tipo=cidade&estado=' + $(this).val());
            }
        }
    );
    $(cidades).change(
        function() {
            if($(this).val() == 0) {
                alert('Você precisa informar a CIDADE!');
                $(this).focus();
            } else {        
                $(bairros).load('localizacoes.php?tipo=bairro&cidade=' + escape($(this).val()));
            }
        }
    );    

    $(bairros).change(
        function() {
            if($(this).val() == 0) {
                alert('Você precisa informar o BAIRRO!');
                $(this).focus();
            } else {        
                return true;
            }
        }
    );    
}
e por fim o código que monta os combobox
switch($_GET['tipo'])
    {
        case 'estado' :
            $sql = mysql_query("SELECT * FROM estados_federacao")or die("Query invalida: " . mysql_error());
            while ($row = mysql_fetch_array($result)) {
             $option = $row["uf"];
             $string = $row["estado"];
             echo "<option value=\"$option\">$string</option>";
   }
            break;
        case 'cidade' :
            $sql = mysql_query("SELECT * FROM municipios WHERE uf = '%uf'", $_GET['estado']);
             $option = $row["nome_municipio"];
             $string = $row["nome_municipio"];
             echo "<option value=\"$option\">$string</option>";            
            break;            
        case 'bairro' :
            $sql = sprintf("SELECT * FROM municipios_bairros WHERE cidade = 'municipio'", ($_GET['cidade']));
             $option = $row["bairro_id"];
             $string = $row["bairro"];
             echo "<option value=\"$option\">$string</option>";    
            break;            
    }

desde já agradeço pela ajuda

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

bom carinha, já que você ta usando jquery, eu criei esse plugin agora, é bem basicao, depois tu pode ir implementando ele:

jqComboAjax.js

jQuery.fn.extend({

    /**
     * Plugin criar combos dinamicos via AJAX
     * @author Rogério Avelino da Silva
     * @version 1.0
     * @date 11/08/10
     */
    jqComboAjax: function( urlFile , objetoRecebe , settings ){
        /**
         * Propriedades Default
         */
        var defaults = {
            data : {} ,
            type : "POST" ,
            colocaOptionDefault : true ,
            textoDefault: "..selecione",
            valueDefault: 0
        }
        
        /**
         * Extende as configurações
         */
        var settings = $.extend( defaults , settings );
            
        $( this ).change( function(){ 
            buscaDados();
        } );
        
        function buscaDados()
        {
            $.ajax( {
                url : urlFile,
                data : settings.data,
                dataType : settings.dataType,
                type : settings.type,
                success: function(data){
                    var d = ( settings.colocaOptionDefault ) ? "<option value='" + settings.valueDefault + "'>" + settings.textoDefault + "</option>" : "";
                    
                    $( objetoRecebe ).html( d + data );
                }
            } );
        }
    }
});
ai você adiciona ele:
<script type='text/javascript' src='jqComboAjax.js'></script>
e pode fazer um teste assim:
$( function(){ 
            $( '#estados' ).jqComboAjax( 
                'localizacoes.php' , /*url*/
                '#cidades' , /*objeto que vai receber o retorno*/
                { 
                    type : 'GET' , 
                    data : { 
                            estado : $( this ).val() /*variavel passada como parametro*/
                    } 
                } /*parametros não obrigatorios*/
            );
        });

espero que ajude, abraço!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...