Ir para conteúdo

POWERED BY:

Arquivado

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

Eduardo Giullyanny

num carreca combo cidades...

Recommended Posts

Boa tarde pessoal, é sempre um prazer estar aqui

 

Gostaria de uma ajuda do de vocês, gostaria que na combo cidades, quando escolhido o estado aparecesse todas as cidades relacionadas com o estado... no estado esta aparecendop beleza, mas qdo escolho ele a combo da cidade fica vazia

 

Me ajudem...

 

funcoes_cid_uf.php

 

<?php

if (file_exists('../includes/init.php'))
{
        include '../includes/init.php';
}
else
{
        exit('Não foi possível encontrar o arquivo de inicialização');
}


$acao = isset($_GET['acao']) ? $_GET['acao'] : FALSE;

header('Content-Type: application/xml');

$xml = "<?xml version='1.0' encoding='iso-8859-1'?>\r\n";


switch ($acao)
{
        case 'buscaEstados':
            buscaEstados();
            break;
        case 'buscaCidades':
            buscaCidades();
            break;
}


function buscaEstados()
{
        global $xml;
        
        $xml .= '<estados>';
        
        $MySQLi = new MySQLi(BD_SERVIDOR, BD_USUARIO, BD_SENHA, BD_NOME);
        
        $sql = $MySQLi->query('Select * From estados Order By nome ASC');
        
        while ($f = $sql->fetch_object())
        {
                $xml .= '  <estado>';
                $xml .= '    <id>' . $f->id . '</id>';
                $xml .= '    <sigla>' . $f->sigla . '</sigla>';
                $xml .= '    <nome>' . $f->nome . '</nome>';
                $xml .= '  </estado>';
        }
        
        $sql->close();
        $MySQLi->close();
        
        $xml .= '</estados>';
        echo $xml;
}



function buscaCidades()
{
        $uf = isset($_GET['uf']) ? (int)$_GET['uf'] : 1;
        
        global $xml;
        
        $xml .= '<cidades>';
        
        $MySQLi = new MySQLi(BD_SERVIDOR, BD_USUARIO, BD_SENHA, BD_NOME);
        
        $sql = $MySQLi->query('Select id, nome From cidades Where id_uf = ' . $uf . ' Order By nome ASC');
        
        while ($f = $sql->fetch_object())
        {
                $xml .= '  <cidade>';
                $xml .= '    <id>' . $f->id . '</id>';
                $xml .= '    <nome>' . $f->nome . '</nome>';
                $xml .= '  </cidade>';
        }
        
        $sql->close();
        $MySQLi->close();
        
        $xml .= '</cidades>';
        echo $xml;
}


?>

 

funcoes_uf_estados.js

 

function buscaEstados()
{
        var uf = document.getElementById('uf');
        
        var op = document.createElement('option');
    op.setAttribute('value', '');
    op.appendChild(document.createTextNode("Carregando..."));
    uf.appendChild(op);
        
        var ajax = openAjax();
        
        ajax.open('GET', '../includes/funcoes_cid_uf.php?acao=buscaEstados', true);
        
        ajax.onreadystatechange = function()
        {
                if (ajax.readyState == 4)
                {
                        if (ajax.status == 200)
                        {
                                uf.innerHTML = '';
                                
                                var opcao = document.createElement('option');
                                opcao.setAttribute('value', '');
                                opcao.appendChild(document.createTextNode('Selecione'));
                                uf.appendChild(opcao);
                                
                                var xml = ajax.responseXML;
                                var estado = xml.getElementsByTagName('estado');
                                
                                for (var i = 0; i < estado.length; i++)
                                {
                                        var idEstado = estado[i].getElementsByTagName('id')[0].firstChild.nodeValue;

                                        var siglaEstado = estado[i].getElementsByTagName('sigla')[0].firstChild.nodeValue;

                                        var nomeEstado = estado[i].getElementsByTagName('nome')[0].firstChild.nodeValue;

                                        
                                        var opcao = document.createElement('option');
                                        opcao.setAttribute('value', siglaEstado);
                                        opcao.appendChild(document.createTextNode(siglaEstado + ' - ' + nomeEstado));
                                        uf.appendChild(opcao);
                                        
                                }
                                
                        }
                }
        }
    ajax.send(null);
    
}




function buscaCidades(uf)
{
        var cidades = document.getElementById('cidade');
        cidades.innerHTML = '';
        var op = document.createElement('option');
    op.setAttribute('value', '');
    op.appendChild(document.createTextNode("Carregando..."));
    cidades.appendChild(op);
        
        var url = '../includes/funcoes_cid_uf.php?acao=buscaCidades&uf=' + uf;
        var ajax = openAjax();
        
        ajax.open('GET', url, true);
        ajax.onreadystatechange = function()
        {
                if (ajax.readyState == 4)
                {
                        if (ajax.status == 200)
                        {
                                cidades.innerHTML = '';
                                
                                var xml = ajax.responseXML;
                                var cidade = xml.getElementsByTagName('cidade');
                                
                                for (var i = 0; i < cidade.length; i++)
                                {
                                        var idCidade = cidade[i].getElementsByTagName('id')[0].firstChild.nodeValue;

                                        var nomeCidade = cidade[i].getElementsByTagName('nome')[0].firstChild.nodeValue;

                                        
                                        var opcao = document.createElement('option');
                                        opcao.setAttribute('value', nomeCidade);
                                        opcao.appendChild(document.createTextNode(nomeCidade));
                                        cidades.appendChild(opcao);
                                }
                        }
                }
        }
        ajax.send(null);
}

 

e no arquivo onde temos os combo

 

<td width="117" bgcolor="<?php echo $cor_bg_tit_campos ?>"><div align="right"><font size="1" face="verdana" color="<?php echo $cor_titulos_campos ?>"><b>Estado: </b></font></div></
td>
           <td colspan="3" bgcolor="<?php echo $cor_bg_dados_inputs ?>">  
                <select name="uf" id="uf" onchange="buscaCidades(this.value)"></select>                 </td>
      </tr>
        <tr>
            <td width="117" bgcolor="<?php echo $cor_bg_tit_campos ?>"><div align="right"><font size="1" face="verdana" color="<?php echo $cor_titulos_campos ?>"><b>Cidade: </b></font></div></
td>
            <td colspan="3" bgcolor="<?php echo $cor_bg_dados_inputs ?>">  
          <select name="cidade" id="cidade">
                <option value="">Primeiramente, selecione o estado</option>
          </select>
          </td>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Debugar primeiro o código php...

 

acessa diretamente lá..

 

localhost/includes/funcoes_cid_uf.php?acao=buscaCidades&uf=15 (coloca algum id ud que exista, veja se aparece o XML, ou algum erro.

 

E olha ali:

opcao.setAttribute('value', siglaEstado);
você está jogando a sigla como value ??

 

então, você não pode tentar pegar como INT:

uf = isset($_GET['uf']) ? (int)$_GET['uf'] : 1;
... já que você tá mandando uma string...

 

uf = isset($_GET['uf']) ? $_GET['uf'] : '';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo William

 

Bom funcionou beleza.

 

Tá carregando as cidades agora.

 

Estou querendo inserir isso em um banco de dados, mas ai so inseri o codigo do estado.

 

Preciso de ajuda...

Compartilhar este post


Link para o post
Compartilhar em outros sites

e como você está fazendo o INSERT ?? mostre o código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde amigo.

 

Acho q está normal, ele tem um que atualiza, mas tem um if para organizar...

 

<?php
    include "../includes/config.php";
    include "../includes/valida_user.inc";
    include "../includes/layout.php";
        
    $nome_fantasia     = $_POST["nome_fantasia"];
    $razao_social     = $_POST["razao_social"];
    $cnpj            = $_POST["cnpj"];
    $insc_estadual    = $_POST["insc_estadual"];
    $endereco        = $_POST["endereco"];
    $cep            = $_POST["cep"];
    $setor            = $_POST["setor"];
    $uf                = $_POST["uf"];
    $cidade            = $_POST["cidades"];
    $fone1            = $_POST["fone1"];
    $fone2             = ($_POST["fone2"]);

     if (op == 'alteracao') { 
      $sQuery = "update assistencias set
                         nome_fantasia = '$nome_fantasia',
                         razao_social = '$razao_social',
                         cnpj = '$cnpj',
                         insc_estadual = '$insc_estadual',
                         endereco = '$endereco',
                         fone1 = '$fone1',
                         fone2 = '$fone2',
                         cep = '$cep',
                         setor = '$setor',
                         uf = '$uf',
                         cidade = '$cidade'
                 where id_assistencia = " . $_GET["id_assistencia"];
                 
                 
                    if (mysql_query($sQuery)) {
                        echo "<script type='text/javascript'>
                        alert('Dados atualizados com sucesso!');
                        </script>";
                        echo "<script>window.location='lista_assistencia_geral.php'</script>";
                    } else {
                        echo "<script type='text/javascript'>
                        alert('Erro Ao Atualizar dados! O programador dever ser solicitado.');
                        </script>";
                            }
                   
        } else {
                
           $sQuery = "insert into assistencias (nome_fantasia, razao_social, cnpj, insc_estadual, endereco, fone1, fone2, cep, setor, uf, cidade)
                 values ('$nome_fantasia',
                         '$razao_social',
                         '$cnpj',
                         '$insc_estadual',
                         '$endereco',
                         '$fone1',
                         '$fone2',
                         '$cep',
                         '$setor',
                         '$uf',
                         '$cidade')";
                         
   if (mysql_query($sQuery)) {
                        echo "<script type='text/javascript'>
                        alert('Dados cadastrados com sucesso');
                        </script>";
                        echo "<script>window.location='listar_assistencia.php'</script>";
                    } else {
                        echo "<script type='text/javascript'>
                        alert('Erro ao inserir dados! O programador deve ser solicitado...');
                        </script>";
                            }

   exit;

}
  
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha ali:

<select name="cidade" id="cidade">
e:

$cidade            = $_POST["cidades"];
viu o erro? Imagem Postada

 

tem um S a mais no teu $_POST..

 

$cidade            = $_POST["cidade"];
[]s !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo,

 

O erro foi qdo coloquei aqui no forum, ele estava certo...

 

Vou lhe dizer o que eu quero fazer, estou querendo popular a combo com cidades e uma com estados, e qdo eu escolher um estado ele me mostre as cidades, bem até ai este codigo esta fazendo, mas qdo eu o mando inserir no bd, ele insere, mas ele insere um codigo...

 

Como eu posso resolver isso...

 

Precido de ajuda...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que código ? e oque você queria inserir ??

 

veja oque você está colocando no atributo value do <option>... é isso que vai chegar através do POST

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, ele busca no mysql e faz a população do estados e de acordo com o estado que escolhe você então popula as cidades...

até ai beleza, mas quando peguei o codigo e o coloquei para inserir no mysql ele coloca somente os codigos... E ai eu n estou encontrando uma forma de alterar isso, pois foi de um tuto que um conhecido me passou fiz igual falava e agora preciso de inserir mas ele inseri codigos.

 

o link de meu codigo e bd está aqui, se puder dá uma olhada: Clique aqui

 

Desculpa mas num sou um bom entendedor, estou estudando para poder ajudar no futuro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eduardo Giullyanny, sei que está buscando aprender mas nesta trajetória esta enchendo o fórum com floods desnecessários

 

Gostaria de pedir que não faça mais posts com textos como "Alguem poderia ajudar..." apenas, coisa que só neste post precisamos excluir mais de uma dezena de vezes

 

Espero que entenda e que aguardo respostas antes de postar e caso esta resposta demore e se precisar postar procure pelo menos postar mais informações que podem ajudar na solução ao invés de apenas floodar o tópico

 

Abraços

 

Mário Monteiro

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.