Autocompletar input com jquery

MySQL

PHP

10/05/2016

Boa tarde, estou com problema em uma jquery, eu fiz um formulario e nele quando preencho o campo nome do cliente, automatica puxa do banco o numero cpf e o codigo, era para puxar tambem o estado e a cidade, ta tudo cadastrado no banco, porem na parte do estado e cidade só fica mostrando Carregando...

Alguem com conhecimento mais amplo, poderia me dar uma dica, já li tudo que eu pude entender, este codigo já foi algo que eu encontrei na internet, ele funciona perfeitamente para o cpf e codigo, porem para o estado e cidade soh fica carregando...

segue o codigo.

<!-- Nova Pesquisa -->

  <script type="text/javascript">
  $(document).ready(function(){
    $("input[name='cliente']").blur(function(){


      var $cod_pn	= $("input[name='cod_pn']");
      var $doc_pn	= $("input[name='doc_cliente']");

   
      $cod_pn.val('Carregando...');
      $doc_pn.val('Carregando...');
 
        $.getJSON(
          'function.php',
          { cliente: $( this ).val() },
          function( json )
          {
            $cod_pn.val( json.cod_pn );
            $doc_pn.val( json.doc_pn );
          }
        );
    });
  });
</script>
<!-- Fim Nova Pesquisa -->

<!-- Nova Pesquisa 2 -->

  	<script type="text/javascript">
	  	$(document).ready(function(){
	    	$("input[name='cliente']").blur(function(){

		    	var $uf_pn		= $("input[name='uf_pn']");
		    	var $city_pn	= $("input[name='city_pn']");
	      	
	      	
		      	$uf_pn.val 		('Carregando...');
		      	$city_pn.val 	('Carregando...');
	      	 
		        $.getJSON(
		          'function2.php',
		          { cliente: $( this ).val() },
		          function( json )
		          {
		          	$uf_pn.val 		( json.uf_pn );
		          	$city_pn.val 	( json.city_pn );
		          });
	    	});
	 	});
	</script>
<!-- Fim Nova Pesquisa 2 -->


<?php
  /**
   * função que devolve em formato JSON os dados do cliente
   */
  function retorna( $nome, $db )
  {
    $sql = "SELECT `name_pn`, `doc_pn`, `cod_pn` FROM `coh_client_completos` WHERE `name_pn` = '{$nome}' ";

    $query = $db->query( $sql );

    $arr = Array();
    if( $query->num_rows )
    {
      while( $dados = $query->fetch_object() )
      {
        $arr[ 'cod_pn' ]  = $dados->cod_pn;
        $arr[ 'doc_pn' ]  = $dados->doc_pn;
        
      }
    }
    else
      $arr['name_pn'] = 'não encontrado';

    return json_encode( $arr );
  }

/* só se for enviado o parâmetro, que devolve os dados */
if( isset($_GET['cliente']) )
{
  $db = new mysqli('localhost', 'root', '', 'coh_fin');
  echo retorna( filter ( $_GET['cliente'] ), $db );
}

function filter( $var ){
  return $var;//a implementação desta, fica a cargo do leitor
}


<?php
  /**
   * função que devolve em formato JSON os dados do cliente
   */
  function retorna2( $nome, $db )
  {
    $sql = "SELECT `name_pn`, `uf_pn`, `city_pn` FROM `coh_client_completos` WHERE `name_pn` = '{$nome}' ";

    $query = $db->query( $sql );

    $arr = Array();
    if( $query->num_rows )
    {
      while( $dados = $query->fetch_object() )
      {
        $arr[ 'uf_pn' ]  = $dados->uf_pn;
        $arr[ 'city_pn' ]  = $dados->city_pn;  
      }
    }
    else
      $arr['name_pn'] = 'Ocorreu um ERRO!';

    return json_encode( $arr );
  }

/* só se for enviado o parâmetro, que devolve os dados */
if( isset($_GET['cliente']) )
{
  $db = new mysqli('localhost', 'root', '', 'coh_fin');
  echo retorna2( filter ( $_GET['cliente'] ), $db );
}

?>
Fabiano

Fabiano

Curtidas 0

Respostas

Marlon Gera

Marlon Gera

10/05/2016

Ao invés de fazer 2 pesquisa, junte os códigos e faça somente 1.
GOSTEI 0
Fabiano

Fabiano

10/05/2016

Ao invés de fazer 2 pesquisa, junte os códigos e faça somente 1.


Fiz isto e ficou tudo com status carregando... resolvi separar e a primeira funciona, a segunda não. Já vi todo o banco, está ok pois se uso os dados da primeira para segunda pesquisa, passa a funcionar a segunda e a primeira fica carregando...
GOSTEI 0
Marlon Gera

Marlon Gera

10/05/2016

<?php
  /**
   * função que devolve em formato JSON os dados do cliente
   */
  function retorna( $nome, $db ){
    $sql = "SELECT `name_pn`, `doc_pn`, `cod_pn`, `uf_pn`, `city_pn` FROM `coh_client_completos` WHERE `name_pn` = '{$nome}' ";
 
    $query = $db->query( $sql );
 
    $arr = Array();
    if( $query->num_rows ){
      while( $dados = $query->fetch_object() ){
        $arr[ 'cod_pn' ]  = $dados->cod_pn;
        $arr[ 'doc_pn' ]  = $dados->doc_pn;
        $arr[ 'uf_pn' ]  = $dados->uf_pn;
        $arr[ 'city_pn' ]  = $dados->city_pn; 
      }
    }else{
      $arr['name_pn'] = 'não encontrado';
 
    return json_encode( $arr );
  }
 
/* só se for enviado o parâmetro, que devolve os dados */
if( isset($_GET['cliente']) )
{
  $db = new mysqli('localhost', 'root', '', 'coh_fin');
  echo retorna( filter ( $_GET['cliente'] ), $db );
}
 
function filter( $var ){
  return $var;//a implementação desta, fica a cargo do leitor
}
?>


<script type="text/javascript">
  $(document).ready(function(){
    $("input[name='cliente']").blur(function(){
 
 
      var $cod_pn   = $("input[name='cod_pn']");
      var $doc_pn   = $("input[name='doc_cliente']");
      var $uf_pn    = $("input[name='uf_pn']");
      var $city_pn  = $("input[name='city_pn']");
 
    
      $cod_pn.val('Carregando...');
      $doc_pn.val('Carregando...');
      $uf_pn.val('Carregando...');
      $city_pn.val('Carregando...');
  
        $.getJSON(
          'function.php',
          { cliente: $( this ).val() },
          function( json )
          {
            $cod_pn.val( json.cod_pn );
            $doc_pn.val( json.doc_pn );
            $uf_pn.val( json.uf_pn );
            $city_pn.val( json.city_pn );
          }
        );
    });
  });
</script>


Já tentou assim?
GOSTEI 0
Fabiano

Fabiano

10/05/2016

sim fica tudo carregando.
GOSTEI 0
Fabiano

Fabiano

10/05/2016

Alguém tem alguma ideia de como me ajudar please
GOSTEI 0
Fabiano

Fabiano

10/05/2016

bom dia

consegui um erro para poder analisar melhor o problema

Notice: Undefined property: stdClass::$uf_pn in C:\wamp64\www\script\function.php on line 18


Segue codigo que estou usando


function.php

<?php
  /**
   * função que devolve em formato JSON os dados do cliente
   */
  function retorna( $nome, $db )
  {
    $sql = "SELECT `name_pn`, `doc_pn`, `cod_pn` FROM `coh_client_completos` WHERE `name_pn` = '{$nome}' ";

    $query = $db->query( $sql );

    $arr = Array();
    if( (!empty($query->num_rows)) )
    {
      while( $dados = $query->fetch_object() )
      {
        $arr[ 'cod_pn' ]  = $dados->cod_pn;
        $arr[ 'doc_pn' ]  = $dados->doc_pn;
        $arr[ 'uf_pn' ]   = $dados->uf_pn;
        
      }
    }
    else{
      $arr['name_pn'] = 'não encontrado';
    }

    return json_encode( $arr );
  }

/* só se for enviado o parâmetro, que devolve os dados */
if( isset($_GET['cliente']) )
{
  $db = new mysqli('localhost', 'root', '', 'coh_fin');
  echo retorna( filter ( $_GET['cliente'] ), $db );
}

function filter( $var ){
  return $var;//a implementação desta, fica a cargo do leitor
}


teste.php

<html lang="en">
<head>

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>


  <meta charset="UTF-8">
  <title>Teste</title>

  <!-- Nova Pesquisa 1 -->
  
  <script type="text/javascript">
    $(document).ready(function(){
      $("input[name='cliente']").blur(function(){


        var $cod_pn = $("input[name='cod_pn']");
        var $doc_pn = $("input[name='doc_cliente']");
        var $uf_pn = $("input[name='estado']");


        $cod_pn.val('Carregando...');
        $doc_pn.val('Carregando...');
        $uf_pn.val('Carregando...');

        $.getJSON(
          'function.php',
          { cliente: $( this ).val() },
          function( json )
          {
            $cod_pn.val( json.cod_pn );
            $doc_pn.val( json.doc_pn );
            $uf_pn.val( json.uf_pn );
          }
          );
      });
    });
  </script>  
  
  <!-- Fim Nova Pesquisa 1 -->

</head>
<body>
 <tr>
  <td width="26%"><label for="cliente">Cliente:</label></td>
  <td width="74%"><input type="text" id="tags" name="cliente" size="50"  /></td>
</tr>
<tr>
 <td><label for="doc_cliente">CNPJ/CPF:</label></td>
 <td><input type="text" name="doc_cliente" id="doc_cliente"  required  /></td>
</tr>
<tr>
  <td><label for="uf_pn">Estado</label></td>
  <td><input type="text" id="estado" name="estado" size="13" ></td>
</tr>
<tr>
  <td><label for="city_pn">Cidade</label></td>
  <td><input type="text" id="cidade" name="cidade">
  </td>
</tr>               
</body>
</html>
GOSTEI 0
Fabiano

Fabiano

10/05/2016

Bom dia,

Problema solucionado com a ajuda do William (Devwilliam), o erro estava na acentuação, com um utf8_encode() nas variáveis $dados->city_pn e $dados->uf_pn o problema foi resolvido.

Muito Obrigado William você é fera.
GOSTEI 0
POSTAR