Olá amigos. Gostaria de compartilhar com todos um assunto procurado por muitos e poucas vezes solucionado de uma forma eficiente. Como buscar ceps online, de forma fácil, com XAJAX.
O que você precisa?
Com um web service conhecido, basta saber como enviar o cep, e receber o retorno dos dados do mesmo. No nosso caso, utilizaremos o www.buscarcep.com.br onde podemos buscar o cep de duas formas:
Neste primeiro momento iremos tratar a forma mais simples, por retorno de uma string, que será tratada por funções do PHP e então adicionado aos campos via XAJAX, sem que seja necessário recarregar nossa página. Vamos ao 1º arquivo:
<?php
// Função que busca o cep e retorna array
function busca_cep($cep){
$resultado = file_get_contents('http://www.buscarcep.com.br/?cep='.urlencode($cep).'&formato=string');
if(!$resultado){
$resultado = "&resultado=0&resultado_txt=erro+ao+buscar+cep";
echo "<script>\n alert(\"Web service de busca de CEP temporariamente indisponível!\"); \n</script>";
}
parse_str($resultado, $retorno);
return $retorno;
}
?>
Esta função acima faz algo bem simples. Ela recebe o parâmetro $cep e com ele faz uma leitura de um link (o qual obtivemos olhando a documentação do site www.buscarcep.com.br) utilizando a função file_get_contents() do PHP. Esta função, por sua vez, recebe os parâmetros em formato de texto, e os mesmos são atribuidos a variável $resultado. Em seguida utilizamos a funcão parse_str() do PHP para converter a string recebida em uma variável do tipo array e retornamos esse array.
2º arquivo:
<?php
require "./ajax/xajax_core/xajax.inc.php"; // XAJAX
require "./funBuscarCep.php"; // Função que faz a busca do cep
$ajax = new xajax();
$ajax->registerFunction("buscaCep");
##################################### BUSCA CEP #####################################
function buscaCep($cep, $endereco, $bairro, $cidade, $estado){
//Instancia o objeto XAJAX response
$objResponse = new xajaxResponse('ISO-8859-1');
if(empty($cep)){
return $objResponse;
}
$cep = str_replace("-", "", $cep);
$resultado_busca = busca_cep($cep); // Retorna um array
// Coloca os valores dos arrays nos campos do formulário
$objResponse->assign($endereco, "value", $resultado_busca['tipo_logradouro']." ".$resultado_busca['logradouro']);
$objResponse->assign($bairro, "value", $resultado_busca['bairro']);
$objResponse->assign($cidade, "value", $resultado_busca['cidade']);
$objResponse->assign($estado, "value", $resultado_busca['uf']);
// Retorna a resposta de XML gerada pelo objeto do xajaxResponse
return $objResponse;
}
// Manda o ajax processar os pedidos acima
$ajax->processRequest();
$ajax->printJavascript('./ajax/');
?>
Neste arquivo temos uma função em xajax chamada buscarCep(), a qual é responsável por receber do formulário o cep e os nomes dos campos de endereço, bairro, cidade e estado, para que, após o retorno da função que busca o cep no web service, os dados sejam atribuidos aos campos sem precisar recarregar a página. Simples assim!
Veja neste link esse código funcionando.
Clique aqui ou aqui e faça download dos scripts.
Grande abraço a todos.
Bruno Henri Garcia Viterbo
Cara parabéns achei muito interessante e útil!
Soel Luiz Venci Filho
Olá, estive configurando esse arquivo mas na hora de abrir a URL estou com o seguinte erro.
PHP Warning: file_get_contents() [<a href='function.file-get-contents'>function.file-get-contents</a>]: URL file-access is disabled in the server configuration in /home/imoveisd/public_html/central/cep/funBuscarCep.php
Estive analizando e pelo jeito o erro ta que não consigo abrir o arquivo no servidor deles.
Poderia me ajudar
Obrigado
rafael santos
ola estou com um probema poderia me ajudar?
eu tenho uma tabela com auto-relacionamento em sql 2000, que nao tem como eu montar os pais e filhos desta tabela. por isso eu trago um json com todos os campos e gostaria de criar uma arvore para exibir os pais e filhos desta tabela, sei que eu preciso de uma funcao recursiva ja que os filhos do pai tambem podem ser pais. se puder me ajudar agradeço. pois nao achei nada na net pra solucionar esta questao. um abraço!
Marjorie Fernanda Barroso Teixeira
Havia instalado e o formulário funcionava perfeitamente, depois que coloquei login e senha na página parou de funcionar.
Não sei se pode ser isso, mas a única coisa que ficou diferente foi isto: <form id="form" name="form" method="POST" action="<?php echo $editFormAction; ?>">
Antes a action não havia o: <?php echo $editFormAction; ?> era somente action=""
Estou a alguns dias quebrando a cabeça pra tentar solucionar este problema, se puder me dar um luz...
Desde já agradeço.
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.