Olá pessoal. Nesse post vou mostrar para vocês como criar uma funcionalidade para um formulário de cadastro onde o usuário informa o CEP do seu endereço e os campos rua, bairro, cidade e estado são preenchidos automaticamente.
Essa técnica é bastante utilizada hoje em dia em diversos sites da web e traz ótimos resultados uma vez que você garante a integridade e padronização das informações que estão sendo salvas, além de facilitar bastante a vida do usuário.Para auxiliar esse processo, o site http://cep.republicavirtual.com.br disponibiliza uma base de dados(Clique aqui para baixar) com todos os CEPs do Brasil para você fazer o download e acoplar ao seu projeto e também um webservice caso deseje fazer uma requisição.trx training O webservice está configurado para responder em XML, QueryString e JavaScript.
No nosso exemplo, utilizaremos a segunda opção.trx home, Criaremos nosso formulário e faremos uma requisição AJAX com o webservice da República Virtual para solicitar os dados no formato XML. Para facilitar a utilização de AJAX, usarei o JQuery. (Leia um artigo onde explico como trabalhar com AJAX + JQuery).
Antes de começarmos a implementação, organize os seus arquivos da seguinte maneira:
- index.php : página principal (onde vai o formulário)
- jquery.js: plugin javascript para auxiliar
- cep.js : arquivo javascript onde será configurado a requisição AJAX
- consultar_cep.php :Arquivo que fará a requisição com o WebService
Primeiramente, vamos implementar o arquivo index.php com o formulário de cadastro:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <!DOCTYPE html> <html> <head> <title>Consulta de CEP - por rafaelWendel.com</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type='text/javascript' src='http://files.rafaelwendel.com/jquery.js'></script> <script type='text/javascript' src='cep.js'></script> </head> <body> <h1>Preenchimento automático com consulta de CEP - por <a href="http://www.rafaelwendel.com" title="Visite o blog www.rafaelwendel.com">rafaelWendel.com</a></h1> <form id="form1" class="form1" method="post"> <label>CEP (Somente números):</label><br /> <input type="text" name="cep" id="cep" maxlength="8" /> <br /><br /> <label>Rua:</label><br /> <input type="text" name="rua" id="rua" size="45" /> <br /><br /> <label>Número:</label><br /> <input type="text" name="numero" id="numero" size="5" /> <br /><br /> <label>Bairro:</label><br /> <input type="text" name="bairro" id="bairro" size="25" /> <br /><br /> <label>Cidade:</label><br /> <input type="text" name="cidade" id="cidade" size="25" /> <br /><br /> <label>Estado:</label><br /> <input type="text" name="estado" id="estado" size="2" /> <br /><br /> <input type="submit" value="Salvar Dados" /> </form> </body> </html> |
Note que é importante darmos nome e ids para todos os campos de texto do formulário pois isso facilita a manipulação de seus valores por meio do js/jquery.
Agora vamos configurar a requisição AJAX dentro do arquivo cep.js :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | $(document).ready( function() { /* Executa a requisição quando o campo CEP perder o foco */ $('#cep').blur(function(){ /* Configura a requisição AJAX */ $.ajax({ url : 'consultar_cep.php', /* URL que será chamada */ type : 'POST', /* Tipo da requisição */ data: 'cep=' + $('#cep').val(), /* dado que será enviado via POST */ dataType: 'json', /* Tipo de transmissão */ success: function(data){ if(data.sucesso == 1){ $('#rua').val(data.rua); $('#bairro').val(data.bairro); $('#cidade').val(data.cidade); $('#estado').val(data.estado); $('#numero').focus(); } } }); return false; }) }); |
A função está configurada para ser executada quando o foco sair do campo CEP. A requisição é feita via método POST com o arquivo consultar_cep.php e o tipo de transmissão que vamos utilizar é o JSON. Em caso de sucesso, os dados do endereço serão inseridos em seus campos correspondentes no formulário e o foco irá para o campoNúmero.
Bom, agora falta apenas o arquivo consultar_cep.php :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $cep = $_POST['cep']; $reg = simplexml_load_file("http://cep.republicavirtual.com.br/web_cep.php?formato=xml&cep=" . $cep); $dados['sucesso'] = (string) $reg->resultado; $dados['rua'] = (string) $reg->tipo_logradouro . ' ' . $reg->logradouro; $dados['bairro'] = (string) $reg->bairro; $dados['cidade'] = (string) $reg->cidade; $dados['estado'] = (string) $reg->uf; echo json_encode($dados); ?> |
Para buscar as informações utilizo a função simplexml_load_file (Leia um artigo que escrevi sobre a leitura de arquivos XML).
Note que para executarmos uma requisição no WebService, devemos especificar na URL o formato que desejamos (no nosso caso, XML) e o cep a ser consultado (Linha 5).
Feito isso basta jogar as informações dentro de um array (Importante a conversão para string porque a função simplexml_load_file retorna Objetos XML) e depois codificar para o formato JSON.
Pronto! Agora é só testar.
Abs!
Show de Bola Rafael, muito bom esse tutorial.
Já vi alguns semelhantes, mas o seu está bem mais atualizado.
Só queria saber contigo, se é garantido o funcionamento desse webservice, por exemplo, se existem garantias de que em um futuro próximo ele não irá sair do ár?
Olá Paulo Vitor,
O que posso dizer sobre o serviço é que ele está no ar a pelo menos 6 anos.
Abs!
Ótima dica. Super recomendado para cadastro de usuários em Lojas Virtuais. Para Rafael Wendel pelo artigo e pelo site.
Olá Edmilson,
Valeu pela força. Continue sempre passando por aqui.
Abs
Legal e bem simples, já estou usando até.
Antes eu usava um que era complicadinho e paro de funcionar, até desanimei de usar.
=]
Amigo otimo post, porem te um erro, em cidades pequenas como Guarai-TO o cep e unico 77700000, no seu nao aparece a cidade e o UF como no site dos correios. se conseguir corrigir esse detalhe ficaria perfeito seu sistema
Olá Greenomac,
Para fazer o que você está desejando, basta alterar a linha 11 do arquivo cep.js
De:
Para:
Aí funcionará belezinha.
Abs!
Amigo fiz de outra maneira, criei minha propria base de dados, fiz o arquivo que buscar o cep, fiz tudo independente, me add no msn pra eu te passar o projeto dae vc publica, sei que ira ajudar muita gente, agora to vendo se encontro um base de dados atualizada, encontrei um problema com o cep 77826-550. ele foi alterando a uns dois anos pelos correios dae nao aparece na base de dados do site que passou, mais parabens pela materia se nao fosse seu site nao teria buscado esse sistema. abs
Olá Dias, poderia me disponibilizar sua base de dados? Meu e-mail é alfred.baudisch@gmail.com
Será de grande ajuda, abraços.
e irmao… poderia me passar essa base de dados… tambem seria de grande ajuda… abraços.
Caros,
eu gostaria de ajuda para criar um motor de busca igual o site da oi
que vc entra digita a cidade e ele completa de tando a cidade
Obrigado
Olá Rafael,
Pelo que entendi você está procurando um sistema de autocomplete.
Dê uma olhada nesse link.
http://jqueryui.com/demos/autocomplete/
Abs!
Rafael, chara
obrigado pela ajuda
e pq sou iniciante e nao sei fazer mto bem
mas teria como pegar somente os do site da oi
e mudar para os dados que eu kero
Olá, baixei a base de dados e instalei no meu servidor MySQL, agora não estou conseguindo entender a lógica de como chamar o CEP direto dessa minha base de dados. . . ou seja o que eu preciso é do script PHP que é chamado:
http://cep.republicavirtual.com.br/web_cep.php
Alguem sabe como é o script que puxa as informações da base MySQL? ou seja como é o código do arquivo web_cep.php?
Valeu
Até
Também tem o http://www.qualocep.com
A base de CEP é atualizada e é barato
Valeu pela dica Rodrigo. Com certeza vai ajudar muita gente.
Grande abs!
gostei disso cara.. mas não teria isso para ASP, somente o ‘consultar_cep.php’ ?
Cara, infelizmente nao tenho conhecimentos em ASP.
Mas no site tem o exemplo de como fazer via javascript.
Dá uma olhada lá: http://www.republicavirtual.com.br/cep/exemplos.php
Abs!
Legal seu tutorial, mas estou tendo um problema, aparece a mensagem no campo Endereço: “XXX ** IP Bloqueado (uso abusivo) **, favor baixar a base dados – http://www.republicavirtual.com.br/cep/”
Pelo que entendi preciso fazer a busca na base de dados localmente, você sabe como eu faria isso?
Obrigado!
Olá Rafael,
estou fazendo um trabalho para executar uma busca de cep na base de dados e trazer automaticamente,estado ,cidade,bairro e logradouro,porém o trabalho tem que ser em JAVA
e o professor disse que posso usar o comando SPLIT para buscar e quebrar as linhas trazendo a resposta,você tem algum conhecimento em JAVA para me ajudar
de uma olhada de como o programa tem que ser achei essa foto e é assim que preciso fazer em Java, vc poderia ajudar?
http://imageshack.us/photo/my-images/198/cep.png/
vlws,abraço
Rafael, primeiramente, parabéns pela disponibilidade em ajudar o pessoal!
Estou com uma dúvida em como utilizar a minha própria Base de Dados para fazer este tutorial que você colocou aqui.
Por exemplo: Eu tenho uma lista de 1000 clientes [em BD MySQL] e gostaria que, no formulário onde preencho o CÓDIGO do cliente, ele já me retorne o NOME do cliente no campo ao lado.
O Form está em TML com JQuery, adicionando campos dinâmicos.
Grande abraço!
Sensacional!
Parabéns pela eficiência e detalhamento no tutorial.
Bom dia Rafael,
Gostaria de utilizar esse sistema no meu site, porém uma dúvida, existe limite de trafego? Qts acessos podem ter ao webservice simultaneos?
Obrigado
abs
Nem funcionou aqui 🙁
Eai cara,
beleza? dá para fazer a mesma coisa com menos código também, dá uma olhada nesse Fiddle…foi feito só com o jQuery: http://jsfiddle.net/dm5Te/
Bom dia vei!
Script EXCELENTE!
Só uma dúvida… enquanto eu rodo ele em localhost o script funciona… agora quando eu faço o UP pro meu servidor, ele não funciona mais.
Saberia me dizer por que?
Servidor: UolHost
Olá Renato,
Alguns servidores de hospedagem não possuem a função simplexml_load_file habilitada. Pode ser isso que está ocasionando o erro.
Abs!
Pessoal,
Outra opção free e muito boa para consulta de CEP é o site:
http://viacep.com.br/
Parabéns, melhor explicação que encontrei! Obg
Se eu utilizar a mesma estrutura, passando um nome ou id de produto por parâmetro, por exemplo, para consultar no banco de dados, funcionaria?
Ao invés de usar:
$reg = simplexml_load_file(“http://cep.republicavirtual.com.br/web_cep.php?formato=xml&cep=” . $cep);
Eu estava querendo receber uma consulta do banco de dados para retornar os dados de um cliente, digitando o id dele, através de uma função:
//variável recebendo os dados do cliente
$reg = self::retornacliente($id);
Onde
//função para retornar o cliente
public static function retornacliente ($id) {
$sql = “SELECT id, endereco, bairro, municipio, uf FROM `clientes `
WHERE `id` = ‘{$id}’ “;
$stmt = $db->query($sql);
return $reg = $stmt->fetchAll();
}
E para o retorno:
//recebimento dos dados do banco de dados
$dados[‘rua’] = (string) $reg[0][‘endereco’];
$dados[‘bairro’] = (string) $reg[0][‘bairro’];
$dados[‘cidade’] = (string) $reg[0][‘municipio’];
$dados[‘estado’] = (string) $reg[0][‘uf’];
//retorno para o formulário
echo json_encode($dados);
Estou utilizando isso em um controlador, através do Zend, que passaria as informações para view.
Tentei desta forma, mas não consegui. Já com a do cep, utilizando simplexml_load_file funcionou. Poderia me auxiliar nisso?
Estou com uma duvida, eu posso mudar o nome da input “Cep” e demais….?
name=”outracoisa” id=”outracoisa” se sim, o que eu devo mudar no cep.js e no php?
estou tentando aqui e não estou conseguindo..
Olá Junior,
Pode sim, e depois de alterar basta ir na linha 8 do arquivo cep.js e fazer a alteração:
Abs!
Rafael, ele chama pelo ID ou pelo Name?
Pelo id. Com o #, igual no css
Rafael tem que mudar na 3 também, muito obrigado !
Agora funcionou (y)
Sim, usando o ID …
Obrigado !
Bom dia
Estou fazendo um trabalho de faculdade sobre esse comando.
não estou conseguindo fazer.
Você teria esse comando completo.
(COMANDO PARA ACHAR ENDEREÇO PELO CEP)
Att,
Miguel
Ei por favor me ajuda na ultima parte quando você falou : “Note que para executarmos uma requisição no WebService, devemos especificar na URL o formato que desejamos (no nosso caso, XML) e o cep a ser consultado (Linha 5).
Feito isso basta jogar as informações dentro de um array (Importante a conversão para string porque a função simplexml_load_file retorna Objetos XML) e depois codificar para o formato JSON.
Pronto! Agora é só testar.
Abs!” eu vi a paginado xml mais não entendi o que tem que fazer então por favor ensina mais detalhado que nem você fez nas outras coisa , porque ai você só resumiu então veio faz o “baguio” explicado, passo a passo , por favor =D
Cara,
Não tem segredo, se você fizer exatamente do jeito que está (copiando e colando os códigos), já vai funcionar.
Abs!
Não funcionou não olha aki : http://cadastronet.besaba.com/Novo_site/Index.php
eu fiz tudo o que tinha que fazer e quando eu coloco não acontece nada
Pensando bem acho melhor você fazer um video para ajudar todo mundo , fazendo passo a passo
consegui , eu tive que colocar no a seguinte : O action tem que estar Assim s não não funciona
Bem que eu fiz com o meu endereço e na rua ficou : rua Sete , mais se chamava rua sete ja faz mais de 10 anos agora é : Rua regina maria de cavarlho
Cara,
Não sou eu que mantenho esse banco de dados. Nem eu que o atualizo.
Lamento
Abs
Ei conseguir achar um erro: tipo quando você acha um bairro com acento na hora que você joga para dar resultado( clikando no enviar) as letras que estão acentuada fica bugada
se quiser testar entra nesse site: http://cadastronet.besaba.com/Novo_site/Index.php e coloca o cep : 12236862
Cara, nessa página de resultado não tem nem a estrutura correta das tags HTML.
É só definir o charset como UTF-8 que tudo vai funcionar. Do mesmo jeito que você definiu no formulário.
Falou!
Você está certo, era erro meu , eu fui imigra o outro form e esqueci de fazer isso , desculpa ai, mas esse conteúdo e de boa qualidade
Muito obrigado pelo, achei bem explicado e muito bom.
Funcionou perfeitamente aqui comigo.
Valew
Ótimo tutorial! Simples, prático e funcional. Parabéns!!
Aqui funcionou, insiro o cep, logo aparece rua, bairro, cidade, estado, só que quando clico no botão “cadastrar” do meu form ele não grava no banco o cep e o número, alguém pode me ajudar?
Olá Rogerio,
O problema deve estar no seu código, no form, na hora de recuperar o que foi digitado ou na hora de inserir no banco.
Abs!
http://correiosapi.apphb.com não está mais funcionando.
Qual seria uma alternativa para meu código abaixo.
$busca_cep = ”
jQuery(document).ready(function($){
$(‘#fill_address’).click(function(){
$(‘#postaload’).html(‘Carregando…’);
var _cep = $(‘#jform_postcode’).val();
$.ajax({
url: ‘http://correiosapi.apphb.com/cep/’ + _cep.replace(‘-‘, ”),
dataType: ‘jsonp’,
crossDomain: true,
contentType: ‘application/json’,
statusCode: {
200: function(data) {
$(‘#postaload’).html(‘Preenchendo…’);
$(‘#jform_country option:contains(\”‘ + data.cidade + ‘\”)’).attr(‘selected’, ‘selected’).trigger(‘liszt:updated’);
$(‘#jform_street_num’).val(data.tipoDeLogradouro + ‘ ‘ + data.logradouro);
$(‘#jform_city’).val(data.bairro);
$(‘#postaload’).empty();
} // Ok
//400: function(msg) {alert(msg);}, // Bad Request
//404: function(msg) {alert(‘CEP não encontrado!!’);} // Not Found
}
});
});
$(‘#jform_vtour’).mask(‘(99)99999-9999’);
$(‘#jform_postcode’).mask(‘99999-999’);
});”;
Ok Rafael fiz uma verificação e realmente esta com problemas no meu código.
Obrigado.
Oi Rafael, obrigado por compartilhar o código! Cara, funcionou tudo certo aqui, mas tentei baixa o jquery e rodar local, mas não funciona… Fico com um pouco de receio de depender de um arquivo que não está nos meus diretórios… porque será que não funciona?
Abs
Matheus,
Nao sei o que pode estar acontecendo. Dá alguma mensagem de erro?
Abs!
Olá Rafael, muito bom os códigos, da para ir muito mais além!
Eu reparei que o arquivo PHP que faz a consulta do CEP precisa estar no mesmo diretório do arquivo php que contem o formulário, caso contrario o “echo json_encode($dados);” não sabe pra onde enviar.
No meu caso, tenho mais de 1 formulário em pastas diferentes e não gostaria de ter que ficar colocando esse arquivo em cada pasta, até mesmo por questão de editar, teria que fazer 1 por 1, tem como mudar isso? Deixar o arquivo em 1 só local e direcionar pra qual página ele vai responder?
Obrigado!
Olá Renan,
Tem como fazer. É só alterar a linha 6 do arquivo cep.js
Nela, ao invés de colocar o endereço relativo, coloca o endereço absoluto.
Ex: url: caminho.com.br/consultar_cep.php
Abs!
Olá, eu to com um problema de utilizar esse script dentro do include, eu já utilizei ele em alguns outros sites, mais é a primeira vez que tenho que utiliza-lo dentro de uma include e ele não esta funcionando, você saberia dizer o porque? desde já obrigado!
Boa tarde Rafael,
Muito bom seu código. Estou precisando implanta-lo na empresa que trabalho, porém precisava que a consulta fosse feita no meu diretório, teria como me passar a base?
lenon.belozi@gmail.com
Obrigado.
Olá Lenon,
Entre em http://cep.republicavirtual.com.br e veja como baixar a base.
Abs!
olá, tentei fezer ele via servidor local, não sei se funciona, usei o Wampsever,
tento colocar da forma como explicou, mas não aparece nada.
teria como me ajudar?
fico no aguardo obrigado.
Alan
Olá Alan,
Como você fez localhost, você precisa habilitar a extensão “php_xmlrpc” para que o script funcione. Verifique se essa extensão está habilitada abrindo o arquivo “php.ini” e procurando pelo termo “php_xmlrpc” verifique se ele não está comentado (com um ponto-e-virgula; no inicio da linha). Se estiver, retire o “;”, salve o arquivo e reinicie o servidor.
Abs!
Excelente post Rafael! Vou testá-lo assim que possível. Estou usando de um outro jeito que peguei em um outro site (http://www.williamluis.com.br/busca-de-endereco-completo-por-cep-com-jquery-e-jsonp/) porém não funciona em páginas que usam o https. Estou desenvolvendo um e-commerce em Magento e o Magento força o uso do https em certas páginas, como a de login, de cadastro, área do usuário e finalização da compra, por exemplo. O que ocorre é que quando o usuário está em uma página que está usando https, ele bloqueia qualquer tentativa de acesso http padrão, por considerar que não é um conteúdo “seguro”.
Você tem alguma idéia para solucionar esse problema?
Valeu, abs!
Olá Rafael, gostei muito da sua iniciativa e interesse de nós ajudar, estive procurando por um tópico deste a muito tempo e enfim achei…
Olhá mas deu problema aqui cmg não sei se é porque faz tempo que você já fez isso e as coisas atualizaram ou porque estou fazendo localhost mas eu fiz exatamente como vc ensina copiando e colando e não acontece nada…
Pode me ajudar, se poder me mandar a resposta por email agradeço…
contato@worldtoth.com.br
Olá Gabriel,
Como você fez localhost, você precisa habilitar a extensão “php_xmlrpc” para que o script funcione. Verifique se essa extensão está habilitada abrindo o arquivo “php.ini” e procurando pelo termo “php_xmlrpc” verifique se ele não está comentado (com um ponto-e-virgula; no inicio da linha). Se estiver, retire o “;”, salve o arquivo e reinicie o servidor.
Abs!
E ai galera, estou compartilhando com vcs o banco de dados de cep dos correios com todos os ceps do Brasil, atualizado até 17/01/2014, o banco de dados esta no formato sql para mysql e também nos formatos sqlite, firebird e access.
Com esse banco vc consegue consultar o endereço de qualquer cep informado, ou pesquisar o endereço e descobrir o cep, excelente para integrar a sua aplicação, seja on-line ou off-line.
Num total 909.585 CEPs de todo o brasil.
Essa base de dados foi extraída do “GPBe – Guia Postal Brasileiro Eletrônico” que é vendido pelo correio por R$ 50,00, porem o banco de dados vem encriptado, para ter acesso ao banco decriptado, o correio vende o “e-DNE Máster” por míseros R$ 2.500,00, um absurdo, o banco de dados de cep do brasil deveria ser gratuito.
Por isso, decriptei o banco e estou compartilhando.
MySql
http://www.4shared.com/archive/LAOSog8Gba/consultacepcorreiosgpbe1701201.html
https://mega.co.nz/#!9As31TKS!uwNKOqjsrpdrhwkIgdNaSnbbznrTp92C982xluG9L0k
Access
http://www.4shared.com/archive/dOQo_LeDce/consultacepcorreiosgpbe1701201.html
https://mega.co.nz/#!9YkSyboK!JqobQUOnMGrO4PhJdWxJms55ueWfK9iOjlfr745sqvI
Firebird
http://www.4shared.com/archive/gm7IKVz2ba/consultacepcorreiosgpbe1701201.html
https://mega.co.nz/#!ld1FjQIZ!VzYLVBiv9vEcPYd0SI–V_940DuPb-vKK5fzt-tcu3k
Sqlite
http://www.4shared.com/archive/iGkVGUCLce/consultacepcorreiosgpbe1701201.html
https://mega.co.nz/#!VQcA0Y6J!Ic2Cc9IeSyXyTzVGqSU8cQUN_zlHH_4aPrsrgZuUr4c
Guia Postal Brasileiro eletronico – GPBe – 17-01-2014
http://www.4shared.com/archive/8rPtXxM5ba/Guia_Postal_Brasileiro_eletron.html
https://mega.co.nz/#!8VVjnQAB!b5I7H0S0DpaoCu9uyL54BMclbaQ9mEIrKheLrBnq8Tk
Abraços.
Obrigado pela contribuição. Com certeza será auxiliará muito os visitantes do blog!
Rafael,
Parabéns pela publicação muito didática e de excelente conteúdo.
Fiz download do arquivo cep.sql e parece que tem um limite de 1000 registros por estado.
Será que você tem para disponibilizar no link o arquivo completo?
Obrigado,
Ruben
Olá Ruben,
Na verdade eu nunca baixei o banco de dados pois quando implemento essa funcionalidade faço a busca direto no servidor (via webservice). Mas estranho que dê esse problema aí que você relatou. Mas se não me engano, nenhum estado brasileiro possui mais do que 1000 cidades.
Abs!
Busca CEP com retorno de endereço completo, Latitude e Longitude de cada CEP, Código IBGE e População estimada de Cidades.
Em breve Webservice. Acesse o site e envie sua sugestão. http://www.mapacep.com.br
Boa noite Rafael. Estou com um problema que é o seguinte:
Eu tentei alterar o arquivo consulta_cep.php
para que ao invés dele fazer uma consulta webservice, ele fazer uma consulta no meu servidor localhost, não para cep mas para qualquer outra coisa que eu queria e ele auto preencher….
só que cara, eu sou um novato na área de programação web, já pesquisei em diversos lugares e nada de encontrar o que eu preciso… o mais próximo que consegui encontrar foi esse seu tuto, mas estou com problema em fazer essa adaptação….
poderia me ajudar com isso ??
pode ser com algum tutorial que vc conheça, ou até mesmo com uma estrutura…
Desde já grato!!
Asafe,
Tente procurar material sobre PHP + MySQL. Quando aprender a desenvolver apps php se conectando com banco de dados você vai conseguir resolver vários de seus problemas.
Abs!
Excelente post Rafael! Vou testá-lo assim que possível. Estou usando de um outro jeito que peguei em um outro site (http://www.williamluis.com.br/busca-de-endereco-completo-por-cep-com-jquery-e-jsonp/) porém não funciona em páginas que usam o https. Estou desenvolvendo um e-commerce em Magento e o Magento força o uso do https em certas páginas, como a de login, de cadastro, área do usuário e finalização da compra, por exemplo. O que ocorre é que quando o usuário está em uma página que está usando https, ele bloqueia qualquer tentativa de acesso http padrão, por considerar que não é um conteúdo “seguro”.
Você tem alguma idéia para solucionar esse problema?
Valeu, abs!
Fala Joao,
Tenho pouco conhecimento em Https. Dê uma olhada nesse link: https://groups.google.com/forum/#!topic/javasf/8MrfYpo51ow
Abs!
Gostaria de um sistema que meu site procure no correios EX:
static public function cep($endereco){
include(‘phpQuery-onefile.php’);
$html = self::simpleCurl(‘http://m.correios.com.br/movel/buscaCepConfirma.do’,array(
‘cepEntrada’=>$endereco,
‘tipoCep’=>”,
‘cepTemp’=>”,
‘metodo’=>’buscarCep’,
));…………………………………………………………..
Parabéns pelo tutorial. Além de muito bem organizado funciona perfeitamente! 🙂
Muito bom o post.
Muito bom. me ajudou bastante na construção do meu sistema. obrigada!
Perfeito! Muito fácil de implementar. Obrigado!!!
Onde encontro o arquivo jquery.js?
Wanderlei,
O que utilizo no exemplo do post pode ser baixado em http://files.rafaelwendel.com/jquery.js . Mas esse está um pouco desatualizado. Visite http://www.jquery.com para baixar versões mais atuais.
Abs!
Se eu estiver usando apenas o servidor local vou conseguir buscar cep?
Olá Wanderlei,
Se você estiver conectado à internet para que sua aplicação consiga “conversar” com a API sim. Não me lembro se é necessário que o módulo CURL tem que estar habilitado. Mas em resumo é pra funcionar sim.
Abs!
Rafael testei esse metodo e ele n acha o cep da minha cidade e varios outros tbm….
Bom dia Rafael,
sem sombra de dúvidas melhor explicação que encontrei na internet. E implementação completa.
Estou começando a mexer com php, javascript/jquery… E estou tentnado fazer com que o usuario digite o cep e os dados sejam mostrados no onclick ao inves do onblur, mas não está funcionando. Teria como você dar alguma dica de como implentar?
Obrigado!!
Olá Gustavo,
No arquivo cep.js, na linha 3, você altera o “blur” para “click”. Aí no lugar do “$(‘cep’)” você altera para o elemento que será clicado, se for o caso.
Acho que é isso.
Abs!
Parabéns e obrigado por este código tão útil.
Sucesso na sua jornada.
Rafael muito bom.. fiz a integracao com o republica virtual usando uma aplicacao .dotnet.
Mas utlimamente nao tem funcionado.. verfiquei direto no site e me aparece a mensagem 403-Forbidden.
Este site nao esta mais em funcionamento..
Att..
Leo de Oliveira
Parabéns Rafael, muito útil e pratico!
nao funciona mais nao sei porque
Aconteceu algo muito estranho, se alguém puder me ajudar. Incrivelmente o script só funciona se eu deixar a página do meu site por exemplo: http://www.meusite.com/cadastro.php.
Caso eu deixe a url amigavel, assim: http://www.meusite.com/cadastro/
simplesmente nao funciona, e como o site é com url amigavel, gostaria de manter um padrão, alguem tem uma solução?
Gabriel,
Já usei esse script em sites com URL amigáveis e funcionou sem problemas. Tome cuidado na chamada do AJAX para não se confundir a URL com uma estrutura de diretórios. Recomendo que utilize o caminho da URL absoluta (com http e tudo) ao invés de relativa.
Abs!
Excelente, obrigado por compartilhar o conhecimento!
Parabéns, abraço!
Bom dia rafael
Muito boa a explicação nota 10 só que então estou com o mesmo problema de não preencher no servidor normal , no meu servidor local usando o MAMP ele funciona normalmente sem erro nenhum agora quando eu subo para o servidor normal uso a hostdime de hospedagem ele já nao funciona teria como voce ajudar.
Olá Gustavo,
Difícil responder, mas o erro provavelmente acontece porque o módulo php_xmlrpc esteja desabilitado em sua hospedagem.
Abs!
Olá Gustavo.
Gostaria de lhe dar os parabéns pelo o que foi apresentado neste post. Muito fácil e prático.
Só uma observação. Alguns comentários acima o Grennomac disse que para cidades pequenas as informações não eram carregadas. Logo após você postou a correção na linha 11, mas fazendo uns teste aqui o problema inverteu, sendo que agora os ceps de cidades grande, ou seja, os mais conhecidos não carregava. Isso acontece devido as informações no site http://cep.republicavirtual.com.br/ não ser completa referente alguns cep. Com isso o valor de retorno da variável data.sucesso na linha 11 muda, logo, o if pode não atender a solução que poderá estar correta não mostrando a informação. Acredito então que, na linha 11 o código deva ser assim:
if(data.sucesso >= 1) //executa comando.
Dessa forma atenderá todas as opções. Posso estar errado, mas não custa nada compartilhar e discutir informações. E também não tirá seu mérito. Mais uma vez parabéns. Fico no aguardo da sua opinião sobre esta minha mensagem.
Obrigado pela contribuição Djalma!!!
No meu código, os dados não são apresentados nos campos correspondentes. Acho que seria pq o cep.js não lê a url do arquivo que é absoluta por estar num seridor. O console do Chrome alega nenhum erro. Estou tentando fazer com que leia este arquivo externo, pq a chave de criptografia permite somente com https, e o arquivo requisitar ao servidor. A url que estou usando é esta: “https://aaaaaaaa.aa3.aaaa/modules/cpfuser/consultar_cep.php”
Cara otimo vlw
Rafael, parabéns pelo tutorial e obrigado por compartilhar a informação. Teste em um servidor local e funcionou perfeitamente.
Grande abraço.
Porque não retorna direto logo em json ?
http://cep.republicavirtual.com.br/web_cep.php?formato=json&cep=” . $cep
Cara, Deus continue abençoando você e toda a sua família, esse post seu me ajudou demais em meus projeto. valeu man….
Rafael qual seria a sintaxe para procurar em um banco de dados em rede e não web? consegue me ajudar?
Muito bom o post. Existe a possibilidade de fazer uma consulta tendo como exemplo esse seu post, sem utilizar o PHP ou somente com o PHP?
Desde já obrigado.
cara show de mais o tutorial o melhor que achei na web! parabéns!
Tenho duas consultas de cep no meu formulario.. o seu sistema so funciona em uma. na outra nem busca.. pode me ajudar?
Meu caro não funcionou, o ajax não ta chamando a função blur, coloquei um alerta, mas nada acontece quando o campo perder o foco
Galera,
Uma opção legal e muito prática para consulta de CEP é o site: http://www.rastreamentocorreios.biz/
Sem usar XML, e usando GET com JSON também funciona:
$(function()
{
/* Executa a requisição quando o campo CEP perder o foco */
$(‘#cep’).blur(function()
{
/* Configura a requisição jQuery */
$.getJSON(
‘http://cep.republicavirtual.com.br/web_cep.php’,
‘formato=json&cep=’+ $(‘#cep’).val(),
function(data)
{
if(data.resultado == 1)
{
$(‘#rua’).val(data.tipo_logradouro + ‘ ‘ + data.logradouro);
$(‘#bairro’).val(data.bairro);
$(‘#cidade’).val(data.cidade);
$(‘#estado’).val(data.uf);
$(‘#numero’).focus();
}
}
);
});
});
Rafael bom dia!
Poderia me mostrar como faço para utilizar da seguinte forma: tenho três campos: código, descrição e quantidade, gostaria de que quando eu digitar o código e for para o campo descrição ele seja preenchido automaticamente para depois eu inserir a quantidade e enviar para o banco de dados. Isso é possível? Desde já obrigado.
Glauco Paiva
Glauco
Acho que esse post pode te ajudar: http://www.rafaelwendel.com/2012/03/utilizando-ajax-com-jquery/
Abs!
Oi Rafael, tudo bom?
Cara eu tenho um site que possui mascaras nos campos e quando eu insiro sua biblioteca jquery ela da conflito e não funciona nenhum. Pode ajudar? (WordPress)
Estranho… funciona local, mas não funciona online
Olá, parabéns pela iniciativa.
Estou com dificuldade de implementar o código.
Sou iniciante e não estou conseguindo compreender o que significa: “jquery.js: plugin javascript para auxiliar “, mencionado no início deste tutorial.
O cep.js criei conforme instruções,
O consultar_cep.php tb,
inclui tb os scripts ”
”
meu arquivo index está com outro nome, porém alterei os names e id’s dos para os valores mencionados na construção do arquivo.
Seria possível me auxiliar ?
Muito obrigado.
Olá Gustavo,
Jquery é uma biblioteca (conjunto de código pronto e disponível que serve para determinadas finalidades distintas e genéricas). Acesse o site oficial para se familiarizar.
Abs!
Boa tarde gostaria de saber o valor pra se adicionar isto no meu site
Boa tarde!
Queria uma ajuda, tenho experiencia basica em excell e precisava muito desta informação, aqui no meu trabalho, para digitar o cep e buscar o endereço, alguém teria esta planilha em excell, que possa me disponibilizar, me ajudaria muito,
meu email
didi.bia10@hotmail.com
Alguém sabe como fazer essa busca em um formulário no PowerApps?
Heelp!!!
No meu caso estou usando o laravel. Deu o erro: Undefined index: cep (View: C:\wamp64\www\front\resources\views\web\cep.blade.php)
Mas gostei da lógica!