Beraldo 864 Denunciar post Postado Fevereiro 12, 2009 Em funcoes.php, deixe assim: $uf = isset($_GET['uf']) ? urldecode($_GET['uf']) : 1;Aquele casting com (int) causaria problemas. em funcoes.js var url = 'funcoes.php?acao=buscaCidades&uf=' + escape(uf); Além da mudanças que eu disse antes. Na tabela "cidades" só é armazena do o ID do estado. Não existe o campo nome_uf. Você terá de, na funcção buscarCidades, buscar o id do estado e depois buscar as cidades usando esse ID. ... era bem mais fácil salvar só os IDs... Compartilhar este post Link para o post Compartilhar em outros sites
Débora B 0 Denunciar post Postado Fevereiro 12, 2009 Beraldo, primeiramente gostaria de agradecer sua atenção. Infelizmente ainda não está funcionando o 2° combo (cidade) Se não for dar muito trabalho poderia tentar resolver isto, estou precisando que funcione desta forma. muito obrigada :rolleyes:/> D.B. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Fevereiro 12, 2009 Não vou fazer o que você quer, pois é a pior maneira. Mantenha somente os IDs no banco e faça relacionamento de tabelas na hora de buscar. Se não souber fazer isso, veja este pequeno tutorial: http://forum.imasters.com.br/index.php?showtopic=140816 A diferença é que você fará dois JOINs: Select t.campos FROM tabela AS t INNER JOIN cidades AS c ON c.id = r.cidade INNER JOIN estados AS e ON e.id = t.estado; É basicamente isso Compartilhar este post Link para o post Compartilhar em outros sites
Débora B 0 Denunciar post Postado Fevereiro 12, 2009 Beraldo entendo e respeito sua colocação. Da forma que eu venho pedindo ajuda soluciona-se 2 problemas ao mesmo tempo. 1° insere os nomes diretamente no db (sem gambiarra) 2° Faz funcionar o plugin do Jquery (preview) - já funcionou com o Estado Acho que já o incomodei demais, mesmo precisando muito e não conseguindo exito só tenho a lhe agradecer. Muito obrigada, DB Compartilhar este post Link para o post Compartilhar em outros sites
pauloquintas 0 Denunciar post Postado Maio 19, 2009 Muitos dos bancos de dados de cidades que encontrei na Internet não tinham acentuação. Porém, encontrei este script, que satisfez a quase todas as minhas necessidades. Fiz alguns ajustes no banco de dados, criei o arquivo de instalação e as funções PHP e JavaScript, para o funcionamento correto do sistema. Desenvolvi para PHP 5, com a extensão MySQLi habilitada. Como o banco de dados é enorme, não postarei o código. O download pode ser feito aqui: Link para download http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif/> Abraços, Beraldo Beraldo preciso da tua ajuda: nao consigo adaptar o meu exemplo ao seu (só estou alterando variáveis), basta a primeira funcionar e ja sei como a segunda funciona a segunda. Eu ja tinha usado o exemplo e consegui coloca-lo a funcionar mas usei os mesmos campos da base de dados. tenho em primeiro lugar o index: ... <script type="text/javascript" src="ajax.js"></script> <script type="text/javascript" src="funcoes.js"></script> <title>Cidades | Estados</title> </head> <body onload="buscaEstados()"> <form method="post" action=""> <p> <select name="uf" id="uf" onchange="buscaCidades(this.value)"> </select> </p> <p> <select name="subcategoria" id="subcategoria"> <option value="">Subcategoria</option> </select> </p> </form> ... segundo tenho a funcoes.php //.... //primeira combobox function buscaEstados() { global $xml; $xml .= '<categorias>'; $MySQLi = new MySQLi(BD_SERVIDOR, BD_USUARIO, BD_SENHA, BD_NOME); $sql = $MySQLi->query('Select * From categorias Order By nome ASC') or die ("sql"); while ($f = $sql->fetch_object()) { $xml .= ' <categoria>'; $xml .= ' <id>' . $f->id . '</id>'; $xml .= ' <nome>' . $f->nome . '</nome>'; $xml .= ' </categoria>'; } $sql->close(); $MySQLi->close(); $xml .= '</categorias>'; echo $xml; } //segunda combobox function buscaCidades() { $uf = isset($_GET['uf']) ? (int)$_GET['uf'] : 1; global $xml; $xml .= '<subcategorias>'; $MySQLi = new MySQLi(BD_SERVIDOR, BD_USUARIO, BD_SENHA, BD_NOME); $sql = $MySQLi->query('Select * From subcategorias Where categoria = ' . $uf . ' Order By nome ASC'); while ($f = $sql->fetch_object()) { $xml .= ' <subcategoria>'; $xml .= ' <id>' . $f->id . '</id>'; $xml .= ' <nome>' . $f->nome . '</nome>'; $xml .= ' </subcategoria>'; } $sql->close(); $MySQLi->close(); $xml .= '</subcategorias>'; echo $xml; } depois vem o ficheiro funcoes.js //primeiro combobox 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', 'funcoes.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 categoria = xml.getElementsByTagName('categoria'); for (var i = 0; i < categoria.length; i++) { var id = categoria[i].getElementsByTagName('id')[0].firstChild.nodeValue; var nome = categoria[i].getElementsByTagName('nome')[0].firstChild.nodeValue; var opcao = document.createElement('option'); opcao.setAttribute('value', id); opcao.appendChild(document.createTextNode(nome)); uf.appendChild(opcao); } } } } ajax.send(null); } //segunda combobox ... desde já os meus campo são da tabela categorias(id, nome), subcategorias(id, nome, categoria) Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Maio 20, 2009 Tente executar function buscaEstados() e buscaCidades() no script PHP, executando-o diretamente, para ver se o XML está sendo gerado corretamente Compartilhar este post Link para o post Compartilhar em outros sites
pauloquintas 0 Denunciar post Postado Maio 20, 2009 Tente executar function buscaEstados() e buscaCidades() no script PHP, executando-o directamente, para ver se o XML está sendo gerado correctamente já descobri o erro. eram os acentos eles não deixa usar á mas descobri um problema, ele não manda o post da segunda combobox. alguma vez testaste? mas não estou a perceber porque :S Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Maio 20, 2009 <?php include_once("funcoes.php"); buscaEstados(); ?> Execute apenas isso e poste o resultado. Se der certo, tente com buscaCidades, passando um ID qualquer como parâmetro Compartilhar este post Link para o post Compartilhar em outros sites
Campecino 0 Denunciar post Postado Maio 20, 2009 Olá pessoal, estou desenvolvendo um sistema de busca, ja tenho o banco de dados, e a area que faz a paginação pegando os dados vindos de um $_GET A pergunta é, como faço pra este sistema enviar os dados tipo ?uf=São Paulo&cidade=São paulo, ao invés dos numeros? Pensei em preparar o resultado deste form com um if, tipo: $uf= isset($_GET[uf]) ? $_GET[uf] : FALSE; if($uf == "1") { $ufnome = "AC"; } if($uf == "2") { $ufnome = "AL"; } E depois usar o $ufnome na minha busca. Mas imagina o trabalho que ia dar pra fazer com todos os estados e cidades, hauhaua, :rolleyes:/> Tem um jeito mais facil? vlw!!!!!!!!!!!! Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Maio 20, 2009 Não entendo por que tantos querem usar a string em vez do ID. Qual é o problema com o ID? Isso facilita o relacionamento de tabelas, economiza espaço em disco.. Com qual finalidade quer fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites
pauloquintas 0 Denunciar post Postado Maio 21, 2009 <?php include_once("funcoes.php"); buscaEstados(); ?> Execute apenas isso e poste o resultado. Se der certo, tente com buscaCidades, passando um ID qualquer como parâmetro já funcionou tinha o nome errado. tenho uma ultima pergunta, caso eu queria colocar uma terceira opção, como é que eu faço? ate agora já adicionei: function buscaCategorias3(uf, uf2) { var categorias = document.getElementById('categorias'); categorias.innerHTML = ''; var op = document.createElement('option'); op.setAttribute('value', ''); op.appendChild(document.createTextNode("Carregando...")); categorias.appendChild(op); var url = 'funcoes2.php?acao=buscaCategorias3&uf=' + uf + '&uf2= ' + uf2; var ajax = openAjax(); ajax.open('GET', url, true); ajax.onreadystatechange = function() { if (ajax.readyState == 4) { if (ajax.status == 200) { categorias.innerHTML = ''; var xml = ajax.responseXML; var categoria = xml.getElementsByTagName('categoria'); for (var i = 0; i < categoria.length; i++) { var idcategoria = categoria[i].getElementsByTagName('id')[0].firstChild.nodeValue; var nomecategoria = categoria[i].getElementsByTagName('nome')[0].firstChild.nodeValue; var opcao = document.createElement('option'); opcao.setAttribute('value', idcategoria); opcao.appendChild(document.createTextNode(nomecategoria)); categorias.appendChild(opcao); } } } } ajax.send(null); } depois adicionei na funções.php function buscaCategorias3() { $uf = isset($_GET['uf']) ? (int)$_GET['uf'] : 1; $uf2 = isset($_GET['uf2']) ? (int)$_GET['uf2'] : 1; global $xml; $xml .= '<categorias>'; $MySQLi = new MySQLi(BD_SERVIDOR, BD_USUARIO, BD_SENHA, BD_NOME); $sql = $MySQLi->query('Select id, nome From subcategorias2 Where categoria = ' . $uf . ' AND subcategoria= ' . $uf2 . ' Order By nome ASC'); while ($f = $sql->fetch_object()) { $xml .= ' <categoria>'; $xml .= ' <id>' . $f->id . '</id>'; $xml .= ' <nome>' . $f->nome . '</nome>'; $xml .= ' </categoria>'; } $sql->close(); $MySQLi->close(); $xml .= '</categorias>'; echo $xml; } e também já adicionei switch ($acao) { case 'buscaEstados2': buscaEstados2(); break; case 'buscaCidades2': buscaCidades2(); break; case 'buscaCategorias3': buscaCategorias3(); break; } no index <select name="categorias" id="categorias"> <option value="">selecione a categorias</option> </select> a lógica esta correta? algum erro? Compartilhar este post Link para o post Compartilhar em outros sites
miromalc 1 Denunciar post Postado Maio 21, 2009 Ola Beraldo ! você ja deve estar cheio de tanto a moçada agraecer, mas gostaria de parabnizar pela ajuda que você me deu. Estou desenvolvendo um trabalho para um cliente onde tem o site e a intranet e sua ajuda facilitou muito minha vida, muito obrigado. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif/> Compartilhar este post Link para o post Compartilhar em outros sites
easyphp 0 Denunciar post Postado Agosto 12, 2009 Hey Beraldo grande post! Estou a fazer um projecto para a faculdade em php e mysql com base no cms da glFusion e precisei do seu código, apenas tive de editar para a minha base de dados e tabelas e tá impecável! Muito Obrigado! valeu! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif/> Compartilhar este post Link para o post Compartilhar em outros sites
CajuCLC 1 Denunciar post Postado Junho 4, 2010 Muito útil o script. :D/> Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo MF 0 Denunciar post Postado Junho 14, 2010 Ola Beraldo, estou utilizando seu codigo e fiz algumas alteraçoes nele, ao inves de procurar por cidades e estados estou procurando por setores e cargos. Só q estou com um probleminha e axo q você pode me ajudar, eh o seguinte: estou botando 2 combos dependentes (setor,cargos)e queria por um terceiro dependendo do cargo, so q gostaria q ele aparecesse em um text area pois sera a descriçao dos cargos, entao q modificação eu teria q fazer no codigo pra resolver isso ? Agradeço desde já Compartilhar este post Link para o post Compartilhar em outros sites
Anderson007 1 Denunciar post Postado Agosto 24, 2015 Olá Beraldo, Uso seu script adaptado à minha realidade há anos e funciona legal. Agora acrescentei um 3 select, países. E estou com dificuldade no this.value, você pode me ajudar? <td bgcolor="#F5F9FF"> <div align="left" class="style9"><strong>País:<span class="style14 style13">*</span></strong></div> <select class="style9" name="paises" id="paises" onchange="buscaEstados(this.value); buscaCidades(this.value)"> </select> <div align="left" class="style9"><strong>Estado:<span class="style14 style13">*</span></strong></div> <select class="style9" name="uf" id="uf" onchange="buscaCidades(this.value)"> <option value="<?php echo $_POST["estado"]; ?>"><?php if (empty($_POST['estado'])) { echo "Primeiramente, selecione o País"; } if (!empty($_POST['estado'])) { echo $post_ufs; } ?></option> </select> </td> <td bgcolor="#F5F9FF"> <div align="left" class="style9"><strong>Cidade:</strong><strong> <span class="style14 style13">*</span></strong></div> <span class="style9"> <select class="style9" name="cidadi" id="cidadi"> <option value="<?php echo $_POST["cidadi"]; ?>"><?php if (empty($_POST['cidadi'])) { echo "Primeiramente, selecione a UF"; } if (!empty($_POST['cidadi'])) { echo $post_cidade; } ?></option> </select> </span> </td> Valeu! Compartilhar este post Link para o post Compartilhar em outros sites