Boas vindas
  Diferença entre duas datas no PHP
  Formas de divulgação e otimização de sites
  Alteração na numeração dos pedidos
 
     
 
Deixe seu email para ser notificado dos posts do nosso blog.
 

VISA A. Express
Boleto Depósito
 
Blog
 
     
 

Web Service CEP - Autocompletar endereços

Neste tutorial estaremos explicando como utilizar nossa base de dados para criar formulários que autocompletam a partir da informação do CEP.

As linguagens utilizadas foram HTML, Javascript e PHP, o tutorial será bem detalhado para ajudar a programadores ASP.

Vamos então ao tutorial.

Crie um arquivo chamado webservicecep.html com a seguinte tabela:

CODE
<table align="center">
<tr>
<td>CEP: </td>
<td><input name="cep" type="text" id="cep" maxlength="9"> <a href="javascript: funcaowebservicecep();">completar endereço</a></td>
</tr>
<tr>
<td>Logradouro: </td>
<td><input id="rua" name="rua" type="text"></td>
</tr>
<tr>
<td>Numero: </td>
<td><input id="numero" name="numero" type="text"></td>
</tr>
<tr>
<td>Complemento: </td>
<td><input id="complemento" name="complemento" type="text"></td>
</tr>
<tr>
<td>Bairro: </td>
<td><input id="bairro" name="bairro" type="text"></td>
</tr>
<tr>
<td>Cidade: </td>
<td><input id="cidade" name="cidade" type="text"></td>
</tr>
<tr>
<td>UF: </td>
<td><input id="uf" name="uf" type="text" size="4"></td>
</tr>
</table>

Observe que é um formulário simples, com um pequeno detalhe; um link chamado "completar endereço" que chama a funcão javascript.

O próximo arquivo é o javascript, consulta.js
CODE
function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}
var http = getHTTPObject();

function funcaowebservicecep()
{
http.open("GET", 'buscarendereco.php?cep='+document.getElementById("cep").value, true);
http.onreadystatechange = handleHttpResponse;
http.send(null);

var arr; //array com os dados retornados
function handleHttpResponse()
{
if (http.readyState == 4)
{
var response = http.responseText;
eval("var arr = "+response); //cria objeto com o resultado
document.getElementById("rua").value = arr.rua;
document.getElementById("bairro").value = arr.bairro;
document.getElementById("cidade").value = arr.cidade;
document.getElementById("uf").value = arr.uf;
}
}
}

Não esqueça que colocar a chamada para consulta.js no arquivo webservicecep.html.
CODE
<script type="text/javascript" src="consulta.js"></script>

O terceiro e último arquivo que precisaremos será em PHP, buscarendereco.php, responsável por coletar os dados a partir do CEP na nossa base de dados.

CODE
$consulta = 'http://viavirtual.com.br/webservicecep.php?cep='.$_GET['cep'];
$consulta = file($consulta);
$consulta = explode('||',$consulta[0]);
// Caso seja necessário poderá salvar os dados em SESSION
$rua=utf8_encode($consulta[0]);
$bairro=utf8_encode($consulta[1]);
$cidade=utf8_encode($consulta[2]);
$uf=$consulta[4];
?>{"rua":"<? echo $rua; ?>","bairro":"<? echo $bairro; ?>","cidade":"<? echo $cidade; ?>","uf":"<? echo $uf; ?>"}

Pronto, estará funcionando se os três arquivos estiverem salvos no mesmo diretório em um servidor Web com suporte a PHP.

Vamos ao ponto mais importante que é lógica, o entendimento permitirá que programadores façam ajustes necessários a suas aplicações.

O internauta acessa o formulário e digita o CEP, ao clicar em "completar endereço" a função javascript funcaowebservicecep é acionada abrindo o arquivo buscarendereco.php com variável CEP.
CODE
http.open("GET", 'buscarendereco.php?cep='+document.getElementById("cep").value, true);

O javascript com a resposta do arquivo buscarendereco.php (nesta hora o arquivo php já está com a informação sobre o endereço do CEP) transforma os dados em objeto separando o resultado e autocompletando o endereço.

CODE
var response = http.responseText;
eval("var arr = "+response); //cria objeto com o resultado
document.getElementById("rua").value = arr.rua;
document.getElementById("bairro").value = arr.bairro;
document.getElementById("cidade").value = arr.cidade;
document.getElementById("uf").value = arr.uf;

Dica Poderá criar no arquivo buscarendereco.php SESSION's para que possa usar os dados em outras ocasiões no site.

Demostração do Web Service CEP
Download dos arquivos

Se for utilizar o Web Service não esqueça de assinar o blog deixando seu e-mail, será por aqui que estaremos fazendo novas considerações e comentários.

Espero ter contribuído, um forte abraço a todos, Evanil.


Postado: Domingo, 5 de Setembro de 2007

Comentários

 
Shirley disse:  
  Quarta-feira, 17 de Novembro de 2007  
  Olá, o único dado que retorna é a UF do CEP correspondente, os outros dados não, tem algum bug no script!? Obrigada  
 
Evanil disse:  
  Sexta-feira, 19 de Novembro de 2007  
  Havia um bug no script, problema resolvido!  
 
Shirley Oliveira disse:  
  Sabado, 20 de Novembro de 2007  
  Obrigada  
 
Leonardo disse:  
  Terça-feira, 23 de Novembro de 2007  
  Excelente! Funciona muito bem. Parabéns!!!  
 
Evanil disse:  
  Terça-feira, 23 de Novembro de 2007  
  Obrigado pelo comentário!  
 
Alan Solon disse:  
  Sabado, 1 de de 2007  
  Otima aplicação muito util e bem pratica. Vlw mesmo pela ajuda.  
 
Alison disse:  
  Sexta-feira, 14 de de 2007  
  como faço pra ele busca os dados na minha base mysql?  
 
Evanil disse:  
  Sabado, 15 de de 2007  
  Exigirá que tenha a base de dados com os CEp's, é uma base bem ampla com mais de 100MB em dados  
 
Alison disse:  
  Sabado, 15 de de 2007  
  eu ja tenho a base se alguem precisar eu posso passar de alguma forma mais eu preciso do seu scrip adaptado para busca na minha base musql de cep teria como???????????  
 
Evanil disse:  
  Sabado, 15 de de 2007  
  O script vai depender de como sua base de dados está organizada. Desejamos boa sorte!  
 
Wdc disse:  
  Terça-feira, 23 de Outubro de 2008  
  Muito util mesmo!  
 
 
       
 
  Home | Contato
(c) 2007 Via Virtual - Soluções Web