Ir para conteúdo

POWERED BY:

Arquivado

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

kernel_tux

Busca CEP - Bem facil!

Recommended Posts

Oi pessoal,

 

Esse fórum é para mim muito util, estava a um tempão devendo a publicação de algum script para retribuir as minhas pesquisas.

Ai vai:

 

Salve como testecep.php

 

<?########################## AUTORA: Tatiane Gonzaga			## CONTATO: tati@soportais.com.br	##########################if ($_POST){	$buscacep	= "http://www.correios.com.br/servicos/falecomoscorreios/ctBuscaEndereco.cfm?cep=$cep";	$fp			= fopen($buscacep,"r");	$cepres		= fread($fp,8146);	fclose ($fp);	$arrcep		= split("'",$cepres);	echo "Endereço: $arrcep[1]<br>";	echo "Bairro: $arrcep[3]<br>";	echo "Cidade: $arrcep[5]<br>";	echo "UF: $arrcep[7]<br>";}?><form method="POST" action=testecep.php>	<div align="center">		<table>			<tr>				<td colspan="2">				<p align="center">Digite o CEP para ver o Endereço</td>			</tr>			<tr>				<td>CEP</td>				<td><input type="text" name="cep" size="20" value="<?=$cep;?>"></td>			</tr>			<tr>				<td> </td>				<td><input type="submit" value="Buscar" name="buscar"></td>			</tr>		</table>	</div></form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu achei show teste funciou legal aogra será que é estavel e seguro usar assim? será que dá para basear um sistema nisso depois o correio tirar essa url do ar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito legal esse exemplo! :joia:/>

 

Felipe, acho que dá pra criar um sistema estável baseado nisso, sim... você cria de forma que, se o correio tirar essa página do ar, não dê erros... o usuário só terá que digitar todos os campos. Mas até aí, é isso que aconteceria se você nem se arriscasse a usá-lo, mesmo... ;)/> Eu criei um exemplo bem legal pra quem estiver dando os primeiros passos com o AJAX (assim como eu)... Ele atualiza os campos sem dar reload na página (assim que perder o foco na caixa do CEP). :D/>

 

É só salvar estes dois arquivos na mesma pasta e executar o "formulario.php".

 

Abraços!

 

endereco.txt.php

<?php

/**

* Busca endereço através do CEP passado pela "querystring" e

* retorna um documento de texto com os parâmetros separados

* por ponto e vírgula.

*

* Carlos Reche (carlosreche@yahoo.com)

* 23.09.2005

*

* baseado no exemplo de Tatiane Gonzaga (tati@soportais.com.br)

* publicado no fórum iMasters (http://forum.imasters.com.br/)

*/

 

$cep = isset($_GET["cep"]) ? preg_replace("/[^\d]/", "", $_GET["cep"]) : false;

$numero = isset($_GET["numero"]) ? trim($_GET["numero"]) : "";

$logradouro = "";

$bairro = "";

$localidade = "";

$uf = "";

 

if ($cep) {

    $res = @file_get_contents("http://www.correios.com.br/servicos/falecomoscorreios/ctBuscaEndereco.cfm?cep=" . $cep);

    if ($res) {

      preg_match_all("/\.value\s*=\s*[\"\']([^\"\']*)[\"\']/", $res, $matches);

      $logradouro = $matches[1][0];

      $bairro = $matches[1][1];

      $localidade = $matches[1][2];

      $uf = $matches[1][3];

    }

}

 

header("Content-type: text/plain");

echo $logradouro . ";" . $numero . ";" . $bairro . ";" . $localidade . ";" . $uf . ";" . $cep;

 

?>

 

formulario.php

<html>

  <head>

    <title>Exemplo de Busca de Endereço por CEP - Carlos Reche</title>

    <script type="text/javascript">

 

function addEvent(obj, evt, func) {

  if (obj.attachEvent) {

    return obj.attachEvent(("on"+evt), func);

  } else if (obj.addEventListener) {

    obj.addEventListener(evt, func, true);

    return true;

  }

  return false;

}

 

function XMLHTTPRequest() {

  try {

    return new XMLHttpRequest(); // FF, Safari, Konqueror, Opera, ...

  } catch(ee) {

    try {

      return new ActiveXObject("Msxml2.XMLHTTP"); // activeX (IE5.5+/MSXML2+)

    } catch(e) {

      try {

        return new ActiveXObject("Microsoft.XMLHTTP"); // activeX (IE5+/MSXML1)

      } catch(E) {

        return false; // doesn't support

      }

    }

  }

}

 

function buscarEndereco() {

  var campos = {

    cep: document.getElementById("cep"),

    logradouro: document.getElementById("logradouro"),

    numero: document.getElementById("numero"),

    bairro: document.getElementById("bairro"),

    localidade: document.getElementById("localidade"),

    uf: document.getElementById("uf")

  };

  var ajax = XMLHTTPRequest();

  ajax.open("GET", ("./endereco.txt.php?cep=" + campos.cep.value.replace(/[^\d]*/, "")), true);

  ajax.onreadystatechange = function() {

    if (ajax.readyState == 1) {

      campos.logradouro.disabled = true;

      campos.bairro.disabled = true;

      campos.localidade.disabled = true;

      campos.uf.disabled = true;

      campos.logradouro.value = "carregando...";

      campos.bairro.value = "carregando...";

      campos.localidade.value = "carregando...";

    } else if (ajax.readyState == 4) {

      var r = ajax.responseText, i, logradouro, numero, bairro, localidade, uf;

      logradouro = r.substring(0, (i = r.indexOf(';')));

      r = r.substring(++i);

      numero = r.substring(0, (i = r.indexOf(';')));

      r = r.substring(++i);

      bairro = r.substring(0, (i = r.indexOf(';')));

      r = r.substring(++i);

      localidade = r.substring(0, (i = r.indexOf(';')));

      r = r.substring(++i);

      uf = r.substring(0, (i = r.indexOf(';')));

      campos.logradouro.disabled = false;

      campos.bairro.disabled = false;

      campos.localidade.disabled = false;

      campos.uf.disabled = false;

      campos.logradouro.value = logradouro;

      campos.bairro.value = bairro;

      campos.localidade.value = localidade;

      i = campos.uf.options.length;

      while (i--) {

        if (campos.uf.options.getAttribute("value") == uf) {

          break;

        }

      }

      campos.uf.selectedIndex = i;

    }

  };

  ajax.send(null);

}

 

 

window.addEvent(

  window,

  "load",

  function() {window.addEvent(document.getElementById("cep"), "blur", buscarEndereco);}

);

 

    </script>

    <style type"text/css">

 

body {

  margin: 0;

  padding: 30px 50px;

  font: 70% Verdana, Arial, sans-serif;

}

h1 {font-size: 140%;}

form {margin: 30px 50px 0;}

form fieldset {

  float: left;

  padding: 0 20px 10px;

  background: #e5e5e5;

  border-style: solid;

  border-width: 1px 2px 2px 1px;

  border-color: #AAA;

}

form legend {

  margin-bottom: 15px;

  padding: 5px 10px;

  background: #F5F5F5;

  border-style: solid;

  border-width: 1px 2px 2px 1px;

  border-color: #AAA;

  font-weight: bold;

}

form p {

  float: left;

  clear: both;

  margin: 0;

}

form label {

  float: left;

  clear: left;

  display: block;

  width: 90px;

  height: 30px;

  margin-right: 5px;

  padding-top: 3px;

  cursor: pointer;

  text-align: right;

  color: #C00;

}

form label.numero {clear: none; width: 60px;}

form label.uf {clear: none; width: 30px;}

form input {float: left; width: 200px;}

form input#numero, form input#uf {width: 50px;}

form input#bt-submit {width: 100px; margin-left: 150px;}

address {clear: both; padding: 30px 0;}

 

    </style>

  </head>

 

  <body>

    <h1>Exemplo de Busca de Endereço por CEP</h1>

    <form action="#" method="post">

      <fieldset>

        <legend>Dados Pessoais</legend>

        <p>

          <label for="nome">Nome</label>

          <input type="text" name="nome" id="nome" />

        </p>

        <p>

          <label for="email">E-mail</label>

          <input type="text" name="email" id="email" />

        </p>

        <p>

          <label for="cep">CEP</label>

          <input type="text" name="cep" id="cep" />

        </p>

        <p>

          <label for="logradouro">Logradouro</label>

          <input type="text" name="logradouro" id="logradouro" />

          <label for="numero" class="numero">Número</label>

          <input type="text" name="numero" id="numero" />

        </p>

        <p>

          <label for="complemento">Complemento</label>

          <input type="text" name="complemento" id="complemento" />

        </p>

        <p>

          <label for="bairro">Bairro</label>

          <input type="text" name="bairro" id="bairro" />

        </p>

        <p>

          <label for="localidade">Localidade</label>

          <input type="text" name="localidade" id="localidade" />

          <label for="uf" class="uf">UF</label>

          <select id="uf">

            <option value="">-- selecione --</option>

            <option value="AC">Acre</option>

            <option value="AL">Alagoas</option>

            <option value="AP">Amapá</option>

            <option value="AM">Amazonas</option>

            <option value="BA">Bahia</option>

            <option value="CE">Ceará</option>

            <option value="DF">Distrito Federal</option>

            <option value="ES">Espírito Santo</option>

            <option value="GO">Goiás</option>

            <option value="MA">Maranhão</option>

            <option value="MT">Mato Grosso</option>

            <option value="MS">Mato Grosso do Sul</option>

            <option value="MG">Minas Gerais</option>

            <option value="PA">Pará</option>

            <option value="PB">Paraíba</option>

            <option value="PR">Paraná</option>

            <option value="PE">Pernambuco</option>

            <option value="PI">Piauí</option>

            <option value="RJ">Rio de Janeiro</option>

            <option value="RN">Rio Grande do Norte</option>

            <option value="RS">Rio Grande do Sul</option>

            <option value="RO">Rondônia</option>

            <option value="RR">Roraima</option>

            <option value="SC">Santa Catarina</option>

            <option value="SP">São Paulo</option>

            <option value="SE">Sergipe</option>

            <option value="TO">Tocantins</option>

          </select>

        </p>

        <p>

          <input type="submit" id="bt-submit" value="Enviar" />

        </p>

      </fieldset>

    </form>

    <address>

      Carlos Reche (<a href="mailto:carlosreche@yahoo.com">carlosreche@yahoo.com</a>)

    </address>

  </body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito legal Illidan.O q é Ajax???

Compartilhar este post


Link para o post
Compartilhar em outros sites

AJAX significa "Asynchronous JavaScript and XML"... basicamente, é uma técnica de desenvolvimento em que você pode fazer uma requisição para o servidor (tanto GET quanto POST) sem ter que dar reload na página toda. Você cria um código javascript pra fazer isso... (através de um objeto do tipo XMLHTTPRequest. O IE não suporta esse objeto, mas tem como contornar :)/> ).

 

Atualmente fala-se muito no AJAX... no entanto, ele tem algumas limitações... por exemplo, se você cria todo o seu site assim, os links que o usuário vai acessando não ficam no histórico do browser (pois na verdade o usuário não saiu da primeira página). Aí, se em algum momento ele clicar em "voltar", ele sai do site... volta pra página acessada anteriormente. :/

 

Acho que a aplicação mais conhecida que usa AJAX é o Google Maps. Se você ver, ele vai carregando as novas partes dos mapas sem carregar a página inteira.

 

[]'s!

Compartilhar este post


Link para o post
Compartilhar em outros sites

nossa fico rulasso parabens Illidan, você ainda vai me ensinar a fazer layout em CSS http://forum.imasters.com.br/public/style_emoticons/default/yay.gif/>

 

tpo, tinha 1 bugzin, ele nao mostrava acentos (bug do proprio Xml), entao eu peguei para arrumar e aproveitei e puis um "validador" de cep e diminui um pouco o code, é besteirinha, so para eu contribuir tambem ^^

 

aqui vai:

 

<html>

  <head>

    <title>Exemplo de Busca de Endereço por CEP - Carlos Reche</title>

    <script type="text/javascript">

 

function addEvent(obj, evt, func) {

  if (obj.attachEvent) {

    return obj.attachEvent(("on"+evt), func);

  } else if (obj.addEventListener) {

    obj.addEventListener(evt, func, true);

    return true;

  }

  return false;

}

 

function XMLHTTPRequest() {

  try {

    return new XMLHttpRequest(); // FF, Safari, Konqueror, Opera, ...

  } catch(ee) {

    try {

      return new ActiveXObject("Msxml2.XMLHTTP"); // activeX (IE5.5+/MSXML2+)

    } catch(e) {

      try {

        return new ActiveXObject("Microsoft.XMLHTTP"); // activeX (IE5+/MSXML1)

      } catch(E) {

        return false; // doesn't support

      }

    }

  }

}

 

function buscarEndereco() {

var campos = {

  validcep: document.getElementById("validcep"),

  cep: document.getElementById("cep"),

  logradouro: document.getElementById("logradouro"),

  numero: document.getElementById("numero"),

  bairro: document.getElementById("bairro"),

  localidade: document.getElementById("localidade"),

  uf: document.getElementById("uf")

};

 

var ajax = XMLHTTPRequest();

ajax.open("GET", ("./endereco.txt.php?cep=" + campos.cep.value.replace(/[^\d]*/, "")), true);

 

  ajax.onreadystatechange = function() {

  if (ajax.readyState == 1) {

  campos.logradouro.disabled = true;

  campos.logradouro.value = "carregando...";

  campos.bairro.disabled = true;

  campos.localidade.disabled = true;

  campos.bairro.value = "carregando...";

  campos.uf.disabled = true;

  campos.localidade.value = "carregando...";

  } else if (ajax.readyState == 4) {

  if(ajax.responseText == false){

    campos.validcep.innerHTML = "Cep invalido !!!";

    campos.logradouro.disabled = false;

    campos.logradouro.value = "";

    campos.bairro.disabled = false;

    campos.localidade.disabled = false;

    campos.bairro.value = "";

    campos.uf.disabled = false;

    campos.localidade.value = "";

  }else{

    campos.validcep.innerHTML = "";

    var r = ajax.responseText, i, logradouro, numero, bairro, localidade, uf;

    logradouro = r.substring(0, (i = r.indexOf(':')));

    campos.logradouro.disabled = false;

    campos.logradouro.value = unescape(logradouro.replace(/\+/g," "));

    r = r.substring(++i);

    bairro = r.substring(0, (i = r.indexOf(':')));

    campos.bairro.disabled = false;

    campos.bairro.value = unescape(bairro.replace(/\+/g," "));

    r = r.substring(++i);

    localidade = r.substring(0, (i = r.indexOf(':')));

    campos.localidade.disabled = false;

    campos.localidade.value = unescape(localidade.replace(/\+/g," "));

    r = r.substring(++i);

    uf = r.substring(0, (i = r.indexOf(';')));

    campos.uf.disabled = false;

    i = campos.uf.options.length;

    while (i--) {

      if (campos.uf.options.getAttribute("value") == uf) {

      break;

      }

    }

    campos.uf.selectedIndex = i;

  }

  }

};

ajax.send(null);

}

 

 

window.addEvent(

  window,

  "load",

  function() {window.addEvent(document.getElementById("cep"), "blur", buscarEndereco);}

);

 

</script>

<style type"text/css">

 

body {

  margin: 0;

  padding: 30px 50px;

  font: 70% Verdana, Arial, sans-serif;

}

h1 {font-size: 140%;}

form {margin: 30px 50px 0;}

form fieldset {

  float: left;

  padding: 0 20px 10px;

  background: #e5e5e5;

  border-style: solid;

  border-width: 1px 2px 2px 1px;

  border-color: #AAA;

}

form legend {

  margin-bottom: 15px;

  padding: 5px 10px;

  background: #F5F5F5;

  border-style: solid;

  border-width: 1px 2px 2px 1px;

  border-color: #AAA;

  font-weight: bold;

}

form p {

  float: left;

  clear: both;

  margin: 0;

}

form label {

  float: left;

  clear: left;

  display: block;

  width: 90px;

  height: 30px;

  margin-right: 5px;

  padding-top: 3px;

  cursor: pointer;

  text-align: right;

  color: #C00;

}

form label.numero {clear: none; width: 60px;}

form label.uf {clear: none; width: 30px;}

form input {float: left; width: 200px;}

form input#numero, form input#uf {width: 50px;}

form input#bt-submit {width: 100px; margin-left: 150px;}

address {clear: both; padding: 30px 0;}

 

    </style>

  </head>

 

  <body>

    <h1>Exemplo de Busca de Endereço por CEP</h1>

    <form action="#" method="post">

      <fieldset>

        <legend>Dados Pessoais</legend>

        <p>

          <label for="nome">Nome</label>

          <input type="text" name="nome" id="nome" />

        </p>

        <p>

          <label for="email">E-mail</label>

          <input type="text" name="email" id="email" />

        </p>

        <p>

          <label for="cep">CEP</label>

          <table><input type="text" name="cep" id="cep" />

  <div id="validcep" style="color: #FF0000;"></div></table>

        </p>

        <p>

          <label for="logradouro">Logradouro</label>

          <input type="text" name="logradouro" id="logradouro" />

          <label for="numero" class="numero">Número</label>

          <input type="text" name="numero" id="numero" />

        </p>

        <p>

          <label for="complemento">Complemento</label>

          <input type="text" name="complemento" id="complemento" />

        </p>

        <p>

          <label for="bairro">Bairro</label>

          <input type="text" name="bairro" id="bairro" />

        </p>

        <p>

          <label for="localidade">Localidade</label>

          <input type="text" name="localidade" id="localidade" />

          <label for="uf" class="uf">UF</label>

          <select id="uf">

            <option value="">-- selecione --</option>

            <option value="AC">Acre</option>

            <option value="AL">Alagoas</option>

            <option value="AP">Amapá</option>

            <option value="AM">Amazonas</option>

            <option value="BA">Bahia</option>

            <option value="CE">Ceará</option>

            <option value="DF">Distrito Federal</option>

            <option value="ES">Espírito Santo</option>

            <option value="GO">Goiás</option>

            <option value="MA">Maranhão</option>

            <option value="MT">Mato Grosso</option>

            <option value="MS">Mato Grosso do Sul</option>

            <option value="MG">Minas Gerais</option>

            <option value="PA">Pará</option>

            <option value="PB">Paraíba</option>

            <option value="PR">Paraná</option>

            <option value="PE">Pernambuco</option>

            <option value="PI">Piauí</option>

            <option value="RJ">Rio de Janeiro</option>

            <option value="RN">Rio Grande do Norte</option>

            <option value="RS">Rio Grande do Sul</option>

            <option value="RO">Rondônia</option>

            <option value="RR">Roraima</option>

            <option value="SC">Santa Catarina</option>

            <option value="SP">São Paulo</option>

            <option value="SE">Sergipe</option>

            <option value="TO">Tocantins</option>

          </select>

        </p>

        <p>

          <input type="submit" id="bt-submit" value="Enviar" />

        </p>

      </fieldset>

    </form>

    <address>

      Carlos Reche (<a href="mailto:carlosreche@yahoo.com">carlosreche@yahoo.com</a>)

    </address>

  </body>

</html>

<?php

/**

* Busca endereço através do CEP passado pela "querystring" e

* retorna um documento de texto com os parâmetros separados

* por ponto e vírgula.

*

* Carlos Reche (carlosreche@yahoo.com)

* 23.09.2005

*

* baseado no exemplo de Tatiane Gonzaga (tati@soportais.com.br)

* publicado no fórum iMasters (http://forum.imasters.com.br/)

* acentos by redneck

*/

 

$cep = isset($_GET["cep"]) ? preg_replace("/[^\d]/", "", $_GET["cep"]) : false;

 

if ($cep) {

$res = implode("", file("http://www.correios.com.br/servicos/falecomoscorreios/ctBuscaEndereco.cfm?cep=" . $cep));

preg_match_all("/\.value\s*=\s*[\"\']([^\"\']*)[\"\']/", $res, $matches);

list($logradouro, $bairro, $localidade, $uf) = $matches[1];

}

 

header("Content-type: text/plain");

if(!empty($logradouro) && !empty($bairro) && !empty($localidade) && !empty($uf))

echo urlencode($logradouro) . ":" . urlencode($bairro) . ":" . urlencode($localidade) . ":" . $uf . ";";

else

echo false;

?>

testado em IE 6.0 e FF 1.4

 

[]'s !!! parabens a vcs ai pelo script vai ajudar muita gente

ps: eu nao esqueci das minhas aulas de CSS nao em ? :rolleyes:/>

ps2: fico meio ruim o posicionamento em IE, nao manjo nada de CSS :huh:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Puxa, q massa esse AJAX.Posta aí uns links de tutos e conceitos, pra gente. :D/>

Compartilhar este post


Link para o post
Compartilhar em outros sites
nossa fico rulasso parabens Illidan, você ainda vai me ensinar a fazer layout em CSS :yay:/>

 

Valeu! :D/> Aplicações com AJAX dão outra cara pro sistema, né? Aqui tem uma muito legal: http://www.tableless.com.br/ajax/ (senha: ajax)

Cliquem nos links na lateral esquerda...

 

Quanto à "aula" de CSS, quem sou eu... hehehe. Mas eu posso te ajudar com o pouco que sei. ;)/>

 

[]'s!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é de se estranhar. O I.E. é o navegador que menos respeita os padrões da W3C...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: php_hostconnect: connect failed in c:\apache\htdocs\sap\testecep.php on line 8Warning: fopen("http://www.correios.com.br/servicos/falecomoscorreios/ctBuscaEndereco.cfm?cep=02733110", "r") - Bad file descriptor in c:\apache\htdocs\sap\testecep.php on line 8Warning: Supplied argument is not a valid File-Handle resource in c:\apache\htdocs\sap\testecep.php on line 9Warning: Supplied argument is not a valid File-Handle resource in c:\apache\htdocs\sap\testecep.php on line 10Endereço: Bairro: Cidade: UF:

Amigos, alguem pode me ajudar ?

 

o que estou fazendo de errado..

 

o codigo que estou usando é : testecep.php

 

 

<?########################## AUTORA: Tatiane Gonzaga ## CONTATO: tati@soportais.com.br ##########################if ($_POST){$buscacep = "http://www.correios.com.br/servicos/falecomoscorreios/ctBuscaEndereco.cfm?cep=$cep";$fp = fopen($buscacep,"r");$cepres = fread($fp,8146);fclose ($fp);$arrcep = split("'",$cepres);echo "Endereço: $arrcep[1]<br>";echo "Bairro: $arrcep[3]<br>";echo "Cidade: $arrcep[5]<br>";echo "UF: $arrcep[7]<br>";}?><form method="POST" action=testecep.php><div align="center"><table><tr><td colspan="2"><p align="center">Digite o CEP para ver o Endereço</td></tr><tr><td>CEP</td><td><input type="text" name="cep" size="20" value="<?=$cep;?>"></td></tr><tr><td> </td><td><input type="submit" value="Buscar" name="buscar"></td></tr></table></div></form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem que mudar o "action" do formulário para o nome do script que está executando. ;)/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá tatiane você sabe como fazer o inverso? por endereco, bairro e receber o cep?e você pode explicar o funcionamento do código? ond você descobriu essa funcionalidade dos correios?

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.