Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Busca Cep ViaCep dando erro Pessoal estou tentando criar uma tela onde digito o cep e retorna os dados, porém ele está dando um erro conforme a imagem que estou anexando e o código é o seguinte: ...
MO
Busca Cep ViaCep dando erro  
Pessoal estou tentando criar uma tela onde digito o cep e retorna os dados, porém ele está dando um erro conforme a imagem que estou anexando e o código é o seguinte:

  1. <?php
  2. class frmcep extends TPage{
  3.     
  4.     
  5.     protected $form;
  6.     
  7.     function __construct()
  8.     {
  9.         parent::__construct();
  10.         
  11.         
  12.     
  13.         $this->form = new TQuickForm("Funcionarios");
  14.     
  15.         $rua = new TEntry('rua');
  16.         $rua->setEditable(FALSE);
  17.     
  18.         $bairro = new TEntry('bairro');
  19.         $bairro->setEditable(FALSE);
  20.         $cep = new TEntry('cep');
  21.         $cidade = new TEntry('cidade');
  22.         $cidade->setEditable(FALSE);
  23.         $uf = new TEntry('uf');
  24.         $uf->setEditable(FALSE);
  25.        
  26.         //cep
  27.         
  28.         $buscacep = new TAction(array($this'oncep'));
  29.         $cep->setExitAction($buscacep);
  30.         
  31.         // mascaras
  32.         
  33.         
  34.      
  35.         $cep->setMask('99999999');
  36.         
  37.         //validação
  38.         
  39.       
  40.            $rua->addValidation('rua',new TRequiredValidator);
  41.            $bairro->addValidation('bairro',new TRequiredValidator);
  42.            $cidade->addValidation('cidade',new TRequiredValidator);
  43.            $uf->addValidation('uf',new TRequiredValidator);
  44.          
  45.         
  46.         
  47.      
  48.     
  49.         $this->form->addQuickField('cep:',$cep,100);
  50.         $this->form->addQuickField('Rua:',$rua,400);
  51.         
  52.         $this->form->addQuickField('Bairro:',$bairro,200);
  53.         $this->form->addQuickField('Cidade:',$cidade,200);
  54.         $this->form->addQuickField('UF:',$uf,30);
  55.     
  56.         
  57.         
  58.         parent::add($this->form);
  59.     }
  60.     
  61.     
  62.    
  63.     
  64.         /**
  65.      * onSearch()
  66.      * @param string $param 'cep'
  67.      */
  68.   
  69.     
  70. public static function oncep($cep)
  71.     {
  72.         $cep preg_replace("/\D/",""$cep);
  73.         if ($cep != "")
  74.         {        
  75.             $resultado simplexml_load_string( @file_get_contents("http://viacep.com.br/ws/".$cep."/xml/"));
  76.             
  77.             $erro = (string) $resultado->erro;
  78.             if ( !$erro )
  79.             {
  80.               $objects['cep']         = (string) $resultado->cep;   
  81.               $objects['logradouro']  = (string) $resultado->logradouro;   
  82.               $objects['complemento'] = (string) $resultado->complemento;   
  83.               $objects['bairro']      = (string) $resultado->bairro;   
  84.               $objects['localidade']  = (string) $resultado->localidade;   
  85.               $objects['uf']          = (string) $resultado->uf;   
  86.               $objects['unidade']     = (string) $resultado->unidade;   
  87.               $objects['ibge']        = (string) $resultado->ibge;   
  88.               $objects['gia']         = (string) $resultado->gia;
  89.               
  90.               return $objects;   
  91.               
  92.             } else return FALSE;
  93.         } else return FALSE;       
  94.         
  95.     }    
  96.     
  97.     
  98. }
  99. ?>

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (9)


LC

Talvez o file_get_contents esteja bloqueado no seu servidor, normalmente em servidor compartilhado ele fica bloqueado, então eu fiz o seguinte:
Usei desta forma:
  1. <?php 
  2. $resultado simplexml_load_stringcurl_file_get_contents"https://viacep.com.br/ws/" $Cep "/xml/" ) );
  3. ?>


  1. <?php 
  2.     /**
  3.      *  Função para substituir o file_get_contents 
  4.      *  O file_get_contents em alguns servidores pode estar desabilitado
  5.      *  Leandro 03/08/2017
  6.      */
  7.     public static function curl_file_get_contents$site_url )
  8.     {
  9.         $timeout 5// set to zero for no timeout    
  10.         $ch curl_init();
  11.         curl_setopt$chCURLOPT_URL$site_url );
  12.         curl_setopt$chCURLOPT_RETURNTRANSFER);
  13.         curl_setopt$chCURLOPT_CONNECTTIMEOUT$timeout );
  14.         curl_setopt$chCURLOPT_SSL_VERIFYHOSTfalse );
  15.         curl_setopt$chCURLOPT_SSL_VERIFYPEERfalse );
  16.         $file_contents curl_exec$ch );
  17.         curl_close$ch );
  18.         return $file_contents;
  19.     }
  20. ?>

MO

amigo não sei mais o que faço, tentei o seu código e não tive êxito, tentei outras coisas sem sucesso. Tentei até mesmo o código javascript da viaCep e tb. não consegui :(
MO

  1. <?php
  2. /**
  3.  * BuscaCepFormView
  4.  * 
  5.  * @version    1.0
  6.  * @author     Ademilson Nunes
  7.  */
  8. class BuscaCepFormView extends TPage
  9. {
  10.     private $form;
  11.     
  12.     public function __construct() 
  13.     {
  14.         parent::__construct();
  15.         ////////////////////////////////////////////////////////////////////////////////////////////////////////
  16.         $script = new TElement('script'); 
  17.         $script->type 'text/javascript';
  18.         //Limpa valores do formulário de cep.
  19.         $javascript 
  20.         function limpa_formulário_cep(){
  21.             document.getElementById('rua').value=('');
  22.             document.getElementById('bairro').value=('');
  23.             document.getElementById('cidade').value=('');
  24.             document.getElementById('uf').value=('');
  25.             document.getElementById('ibge').value=('');
  26.         }
  27.         function meu_callback(conteudo) {
  28.             if (!("erro" in conteudo)) 
  29.             {
  30.                 //Atualiza os campos com os valores.
  31.                 document.getElementById('rua').value=(conteudo.logradouro);
  32.                 document.getElementById('bairro').value=(conteudo.bairro);
  33.                 document.getElementById('cidade').value=(conteudo.localidade);
  34.                 document.getElementById('uf').value=(conteudo.uf);
  35.                 document.getElementById('ibge').value=(conteudo.ibge);
  36.             } //end if.
  37.             else 
  38.             {
  39.                 //CEP não Encontrado.
  40.                 limpa_formulário_cep();
  41.                 alert("CEP não encontrado.");
  42.             }
  43.         }
  44.         
  45.         function pesquisacep(valor) 
  46.         {
  47.             //Nova variável "cep" somente com dígitos.
  48.             var cep = valor.replace(/\D/g, '');
  49.             //Verifica se campo cep possui valor informado.
  50.             if (cep != "") 
  51.             {
  52.                 //Expressão regular para validar o CEP.
  53.                 var validacep = /^[0-9]{8}$/;
  54.                 //Valida o formato do CEP.
  55.                 if(validacep.test(cep)) 
  56.                 {
  57.                     //Preenche os campos com "..." enquanto consulta webservice.
  58.                     document.getElementById('rua').value="...";
  59.                     document.getElementById('bairro').value="...";
  60.                     document.getElementById('cidade').value="...";
  61.                     document.getElementById('uf').value="...";
  62.                     document.getElementById('ibge').value="...";
  63.                     //Cria um elemento javascript.
  64.                     var script = document.createElement('script');
  65.                     //Sincroniza com o callback.
  66.                     script.src = 'https://viacep.com.br/ws/'+ cep + '/json/?callback=meu_callback';
  67.                     //Insere script no documento e carrega o conteúdo.
  68.                     document.body.appendChild(script);
  69.                 } //end if.
  70.                 else 
  71.                 {
  72.                     //cep é inválido.
  73.                     limpa_formulário_cep();
  74.                     alert("Formato de CEP inválido.");
  75.                 }
  76.             } //end if.
  77.             else {
  78.                 //cep sem valor, limpa formulário.
  79.                 limpa_formulário_cep();
  80.             }
  81.         };";
  82.         $script->add($javascript); 
  83.         
  84.         ////////////////////////////////////////////////////////////////////////////////////////////////////////
  85.         $this->form = new TForm('BuscaCorreioForm');               
  86.         $table    = new TTable;
  87.         $this->form->add($table);
  88.         
  89.         $notebook = new TNotebook;
  90.         $notebook->setSize(650150);
  91.         $notebook->appendPage('Exemplo de Busca nos Correios usando CEP'$this->form);
  92.         
  93.         $cep        = new TEntry('cep');
  94.         $logradouro = new TEntry('logradouro');
  95.         $numero     = new TEntry('numero');
  96.         $bairro     = new TEntry('bairro');
  97.         $cidade     = new TEntry('cidade');
  98.         $uf         = new TEntry('uf');
  99.   
  100.         $cep->setSize(100);
  101.         $logradouro->setEditable(false);
  102.         $cep->setMask('99999-999');
  103.         $logradouro->setSize(200);
  104.         $numero->setSize(50);
  105.         $bairro->setSize(200);
  106.         $bairro->setEditable(false);
  107.         $cidade->setSize(150);
  108.         $cidade->setEditable(false);
  109.         $uf->setSize(30);
  110.         $uf->setEditable(false);
  111.         
  112.         $buscaCep = new TAction(array($this'onSearch'));
  113.         $cep->setExitAction($buscaCep);
  114.         
  115.         $row $table->addRow();
  116.         $row->addCell(new TLabel('CEP:'));
  117.         $row->addCell($cep);
  118.         $row $table->addRow();
  119.         $row->addCell(new TLabel('Endereço:'));
  120.         $row->addCell($logradouro);
  121.         $row->addCell(new TLabel('Número:'));
  122.         $row->addCell($numero);
  123.         $row $table->addRow();
  124.         $row->addCell(new TLabel('Bairro:'));
  125.         $row->addCell($bairro);
  126.         $row->addCell(new TLabel('Cidade:'));
  127.         $row->addCell($cidade);
  128.         $row->addCell(new TLabel('UF:'));
  129.         $row->addCell($uf);
  130.         
  131.         $this->form->setFields(array($cep,
  132.                                      $logradouro
  133.                                      $numero,
  134.                                      $bairro,
  135.                                      $cidade,
  136.                                      $uf)); 
  137.         parent::add($notebook);
  138.     
  139.     }
  140.     
  141.     /**
  142.      * onSearch()
  143.      * @param string $param 'cep'
  144.      */
  145.     public static function pesquisacep($param)
  146.     {
  147.         $obj = new StdClass;
  148.         $buscaCep = new TBuscaCorreio;
  149.         $data $buscaCep->getData($param['cep']);
  150.         $obj->logradouro $data['Logradouro'];
  151.         $obj->cidade     $data['Cidade'];
  152.         $obj->bairro     $data['Bairro'];
  153.         $obj->uf         $data['UF']; 
  154.         TForm::sendData('BuscaCorreioForm'$obj);
  155.    
  156.     }
  157. }
  158. ?>

LC

Assim funcionou aqui comigo:
  1. <?php 
  2. /**
  3.  * BuscaCepFormView
  4.  * 
  5.  * @version    1.0
  6.  * @author     Ademilson Nunes
  7.  */
  8. class BuscaCepFormView extends TPage
  9. {
  10.     private $form;
  11.     
  12.     public function __construct() 
  13.     {
  14.         parent::__construct();
  15.         $this->form = new TForm('BuscaCepFormView');               
  16.         $table    = new TTable;
  17.         $this->form->add($table);
  18.         
  19.         $notebook = new TNotebook;
  20.         $notebook->setSize(650150);
  21.         $notebook->appendPage('Exemplo de Busca nos Correios usando CEP'$this->form);
  22.         
  23.         $cep        = new TEntry('cep');
  24.         $logradouro = new TEntry('logradouro');
  25.         $numero     = new TEntry('numero');
  26.         $bairro     = new TEntry('bairro');
  27.         $cidade     = new TEntry('cidade');
  28.         $uf         = new TEntry('uf');
  29.   
  30.         $cep->setSize(100);
  31.         $logradouro->setEditable(false);
  32.         $cep->setMask('99999-999');
  33.         $logradouro->setSize(200);
  34.         $numero->setSize(50);
  35.         $bairro->setSize(200);
  36.         $bairro->setEditable(false);
  37.         $cidade->setSize(150);
  38.         $cidade->setEditable(false);
  39.         $uf->setSize(30);
  40.         $uf->setEditable(false);
  41.         
  42.         $buscaCep = new TAction(array($this'onSearch'));
  43.         $cep->setExitAction($buscaCep);
  44.         
  45.         $row $table->addRow();
  46.         $row->addCell(new TLabel('CEP:'));
  47.         $row->addCell($cep);
  48.         $row $table->addRow();
  49.         $row->addCell(new TLabel('Endereço:'));
  50.         $row->addCell($logradouro);
  51.         $row->addCell(new TLabel('Número:'));
  52.         $row->addCell($numero);
  53.         $row $table->addRow();
  54.         $row->addCell(new TLabel('Bairro:'));
  55.         $row->addCell($bairro);
  56.         $row->addCell(new TLabel('Cidade:'));
  57.         $row->addCell($cidade);
  58.         $row->addCell(new TLabel('UF:'));
  59.         $row->addCell($uf);
  60.         
  61.         $this->form->setFields(array($cep,
  62.                                      $logradouro
  63.                                      $numero,
  64.                                      $bairro,
  65.                                      $cidade,
  66.                                      $uf)); 
  67.         parent::add($notebook);
  68.     
  69.     }
  70.     
  71.     /**
  72.      * onSearch()
  73.      * @param string $param 'cep'
  74.      */
  75.     public static function pesquisacep($param)
  76.     {
  77.         $obj = new StdClass;
  78.         $buscaCep = new TBuscaCorreio;
  79.         $data $buscaCep->getData($param['cep']);
  80.         $obj->logradouro $data['Logradouro'];
  81.         $obj->cidade     $data['Cidade'];
  82.         $obj->bairro     $data['Bairro'];
  83.         $obj->uf         $data['UF']; 
  84.         TForm::sendData('BuscaCorreioForm'$obj);
  85.    
  86.     }
  87.     
  88.     /**
  89.      * Busca endereço pelo cep
  90.      */
  91.     public static function onSearch($param)
  92.     {
  93.         //var_dump($param);
  94.         //faz a busca pelo cep informado
  95.         $cep BuscaCepFormView::buscaCep($param['cep']);
  96.         var_dump($cep);
  97.         
  98.         if ( $cep )
  99.         {
  100.             $obj = new StdClass;
  101.             $obj->logradouro $cep['Logradouro'];
  102.             $obj->cidade     $cep['Localidade'];
  103.             $obj->bairro     $cep['Bairro'];
  104.             $obj->uf         $cep['UF']; 
  105.             TForm::sendData('BuscaCepFormView'$obj);
  106.         }
  107.         else
  108.         {
  109.             new TMessage('info''Informe um CEP corretamente, endereço não econtrado !');
  110.         }
  111.         
  112.     }
  113.     
  114.     /**
  115.      *  By Marco AR Campos
  116.      *  Função de busca de Endereço pelo CEP 
  117.      *  Parametro - &Cep "09210000" 
  118.      *  Retorno   - Array ('CEP','Logradouro','Complemento','Bairro','Localidade ','UF','Unidade','IBGE','GIA','TipoLogradouro','LogradouroSemTipo') 
  119.      */
  120.     public static function buscaCep$Cep )
  121.     {
  122.         $Cep preg_replace"/D/"""$Cep );
  123.         if ( $Cep != "" )
  124.         {
  125.             $resultado simplexml_load_stringBuscaCepFormView::curl_file_get_contents"https://viacep.com.br/ws/" $Cep "/xml/" ) );
  126.             $erro = (string) $resultado->erro;
  127.             if ( !$erro )
  128.             {
  129.                 $objects'CEP' ] = (string) $resultado->cep;
  130.                 $objects'Logradouro' ] = (string) $resultado->logradouro;
  131.                 $objects'Complemento' ] = (string) $resultado->complemento;
  132.                 $objects'Bairro' ] = (string) $resultado->bairro;
  133.                 $objects'Localidade' ] = (string) $resultado->localidade;
  134.                 $objects'UF' ] = (string) $resultado->uf;
  135.                 $objects'Unidade' ] = (string) $resultado->unidade;
  136.                 $objects'IBGE' ] = (string) $resultado->ibge;
  137.                 $objects'GIA' ] = (string) $resultado->gia;
  138.                 // ajuste incluído por Leandro Coelho - 12/12/2016
  139.                 $p strpos$objects'Logradouro' ], ' ' );
  140.                 $objects'TipoLogradouro' ] = substr$objects'Logradouro' ], 0$p );
  141.                 $objects'LogradouroSemTipo' ] = substr$objects'Logradouro' ], ($p ) );
  142.                 return $objects;
  143.             }
  144.             else
  145.             {
  146.                 return FALSE;
  147.             }
  148.         }
  149.         else
  150.         {
  151.             return FALSE;
  152.         }
  153.     }
  154.     /**
  155.      *  Função para substituir o file_get_contents 
  156.      *  O file_get_contents em alguns servidores pode estar desabilitado
  157.      *  Leandro 03/08/2017
  158.      */
  159.     public static function curl_file_get_contents$site_url )
  160.     {
  161.         $timeout 5// set to zero for no timeout    
  162.         $ch curl_init();
  163.         curl_setopt$chCURLOPT_URL$site_url );
  164.         curl_setopt$chCURLOPT_RETURNTRANSFER);
  165.         curl_setopt$chCURLOPT_CONNECTTIMEOUT$timeout );
  166.         curl_setopt$chCURLOPT_SSL_VERIFYHOSTfalse );
  167.         curl_setopt$chCURLOPT_SSL_VERIFYPEERfalse );
  168.         $file_contents curl_exec$ch );
  169.         curl_close$ch );
  170.         return $file_contents;
  171.     }
  172. }
  173. ?>

?>
MO

Chefe deu um erro:

Notice: Trying to get property of non-object in C:Vertrigowwwsisbs_testeappcontrolapresentacaoEncontraCepFormView.class.php on line 126

Notice: Trying to get property of non-object in C:Vertrigowwwsisbs_testeappcontrolapresentacaoEncontraCepFormView.class.php on line 129

Notice: Trying to get property of non-object in C:Vertrigowwwsisbs_testeappcontrolapresentacaoEncontraCepFormView.class.php on line 130

Notice: Trying to get property of non-object in C:Vertrigowwwsisbs_testeappcontrolapresentacaoEncontraCepFormView.class.php on line 131

Notice: Trying to get property of non-object in C:Vertrigowwwsisbs_testeappcontrolapresentacaoEncontraCepFormView.class.php on line 132

Notice: Trying to get property of non-object in C:Vertrigowwwsisbs_testeappcontrolapresentacaoEncontraCepFormView.class.php on line 133

Notice: Trying to get property of non-object in C:Vertrigowwwsisbs_testeappcontrolapresentacaoEncontraCepFormView.class.php on line 134

Notice: Trying to get property of non-object in C:Vertrigowwwsisbs_testeappcontrolapresentacaoEncontraCepFormView.class.php on line 135

Notice: Trying to get property of non-object in C:Vertrigowwwsisbs_testeappcontrolapresentacaoEncontraCepFormView.class.php on line 136

Notice: Trying to get property of non-object in C:Vertrigowwwsisbs_testeappcontrolapresentacaoEncontraCepFormView.class.php on line 137
array(11) { ["CEP"]=> string(0) "" ["Logradouro"]=> string(0) "" ["Complemento"]=> string(0) "" ["Bairro"]=> string(0) "" ["Localidade"]=> string(0) "" ["UF"]=> string(0) "" ["Unidade"]=> string(0) "" ["IBGE"]=> string(0) "" ["GIA"]=> string(0) "" ["TipoLogradouro"]=> string(0) "" ["LogradouroSemTipo"]=> bool(false) }
LC

Na linha 126 ai sua tem o q ?
MO

126 - $erro = (string) $resultado->erro;
MO

Amigo acho que descobri o problema, na minha casa eu utilizo a internet sem proxy e funcionou perfeitamente, acho que o proxy do trabalho não está permitindo fazer a busca, vou procurar o administrador e relatar este problema. O que acontecer eu repasso depois.
MO

Deu certo, agora vou implementar no meu sistema, obrigado Leandro Coelho pela enorme ajuda e paciência