Jump to content
Sign in to follow this  
Andrew Marques

Retornar dois valores em campos diferentes com jQuery AutoComplete

Recommended Posts

Olá pessoal...

 

Tenho na minha pagina o seguinte JS:

 

<script type="text/javascript">
$(document).ready(function(){
	$('#usuario').autocomplete({
		source: "busca_usuarios.php",
		minLength: 1
    });
});
</script>

 

Na pagina busca_usuarios.php tenho o seguinte codigo:

 

<?php
require("../conexao/config.php"); 
//busca valor digitado no campo autocomplete "$_GET['term']
$text = mysql_real_escape_string($_GET['term']);
$query = "SELECT * FROM usuarios WHERE nome LIKE '%$text%' ORDER BY nome ASC";
$result = mysql_query($query);
//formata o resultado para JSON
$json = '[';
$first = true;
while($row = mysql_fetch_array($result))
{
  if (!$first) { $json .=  ','; } else { $first = false; }
  $json .= '{"value":"'.utf8_encode($row['nome']).'"}';
}
$json .= ']';
 
echo $json;
?>

 

Até aí blz...

Ta funfando certinho o auto complete...

 

O que eu preciso é... Em baixo do meu campo com id #usuario tenho um campo chamado id_usuario preciso retornar nesse campo hidden o id do usuário clicado...

 

mas não sei como fazer... alguém da um "help" ?

 

Grato desde já!

Share this post


Link to post
Share on other sites

Eu acho que está faltando coisa aí...

 

<script type="text/javascript"> 
$(document).ready(function(){ 
   $('#usuario').autocomplete({ source: "busca_usuarios.php", minLength: 1 }); 
}); 
</script>

 

 

$text = mysql_real_escape_string($_GET['term']);

 

Onde no jQuery você coloca esse parâmetro ? Colocou o código inteiro aqui ?

 

Ou eu não entendo nada desse plugin ?

Share this post


Link to post
Share on other sites

Cara, o jQuery manda o que eu digitei pra outra pagina por esse $_GET['term']...

 

Ta funfando o resultado do usuario, mas o que preciso: quando clicar no usuario, selecionando ele, preencha outro input com o ID desse usuario entendeu

Share this post


Link to post
Share on other sites

$json .= '{"value":"'.utf8_encode($row['nome']).'", "codigo": $row[Codigo]}';

 

Acrescenta um outro parametro no Array.

 

E onde você recebe coloca

 

$("#idusuario").val(json.codigo);

 

O 'codigo' seria o parametro no array do Json...

Share this post


Link to post
Share on other sites

 

$("#id_user").val(json.codigo);
isso fica no jQuery

 

No PHP você tem que por aquela vírgula e acrescentar outro parâmetro no Array somente com o mesmo nome do json.CODIGO.


Se o nome do Parametro for ID, coloca json.ID, sempre igual.

 

Então.. pra mim acho que teria ter mais coisas aí... sei lá, precisava ver tudo.

 

Pq aqui no seu código depois da URL deveria ter isso: ?term="+$(this).val()...mas talvez o plugin já faça sozinho, não sei...

 

<script type="text/javascript"> 
   $(document).ready(function(){ 
      $('#usuario').autocomplete({ 
         source: "busca_usuarios.php?term="+$(this).val(), 
         minLength: 1 
      }); 
}); </script>

 

E no PHP acrescentaria outro parametro

 

 

$json .= '{"value":"'.utf8_encode($row['nome']).'", "codigo":'.$row['Codigo'].'}';

Share this post


Link to post
Share on other sites

Já acrescentei o novo array:

 

$json .= '{"value":"'.utf8_encode($row['nome']).'", "codigo":"'.$row['id'].'"}';

 

O term o plugin envia sozinho...

 

E o html ta assim:

 

<input type="text" id="nome_user" />
<input type="text" id="id_user" />

 

Não to conseguindo colocar o valor la do 2º array no campo id_user

Share this post


Link to post
Share on other sites

Então... é como não sei como o plugin trabalha, vou pesquisar aqui...

 

Veja isso:

 

 

$(document).ready(function(){ 
   $('#usuario').autocomplete({ 
      source: "busca_usuarios.php", 
      minLength: 1,
      select: function( event, ui ) {
         $("#id_user").val(ui.item.codigo);
      }
    });
});

Esse CODIGO é o outro parametro que você criou

Edited by Tywin
  • +1 1

Share this post


Link to post
Share on other sites

Opa, parabéns pra você.



É bom dar uma lida na documentação dos Plugins que usamos... tem bastante coisas que tiram nossas dúvidas.

Share this post


Link to post
Share on other sites

Olá a todos.

Estou tentando fazer a mesma coisa que o criador do tópico. Já li e reli várias vezes este tópico e segui as orientações aqui dadas e mesmo assim não consegui o resultado que queria.

 

O que está aparecendo para mim é:

25sboz8.jpg

 

autocomplete.php

<?php
  $host="myhost"; // Host name
  $username="myuser"; // Mysql username
  $password="mypassword"; // Mysql password
  $db_name="mydatabase"; // Database name
  
  $con = mysql_connect($host,$username,$password)   or die(mysql_error());
  mysql_select_db($db_name, $con)  or die(mysql_error());
  
  //busca valor digitado no campo autocomplete "$_GET['q']
  $text = mysql_real_escape_string($_GET['q']);
  $query = "SELECT * FROM recepcao WHERE recep_nome LIKE '%$text%' ORDER BY recep_nome ASC";
  $result = mysql_query($query);
  //formata o resultado para JSON
  $json = '[';
  $first = true;
  while($row = mysql_fetch_array($result)) {
    if (!$first) { $json .=  ','; } else { $first = false; }
	$json .= '{"value":"'.utf8_encode($row['recep_nome']).'", "cpf":"'.$row['recep_cpf'].'"}';
  }
  $json .= ']';
  echo $json;
?>

index.php

<script type="text/javascript" src="js/jquery.autocomplete.js"></script>
<script type="text/javascript">
  $(document).ready(function(){ 
    $('#nome').autocomplete("admin/autocomplete.php" ,{
      minLength: 1,
      select: function( event, ui ) {
         $("#cpf").val(ui.item.cpf);
      }
    });
  });
</script>
<br/>
<div id="auto">
  <form autocomplete="off">
    <ul class="form">
      <li><label>Nome:</label><input type="text" name="nome" id="nome" /></li>
      <li><label>CPF:</label><input type="text" name="cpf" id="cpf" /></li>
    </ul>
  </form>
</div>

Gostaria de saber onde está o meu erro. Desde já obrigado pela atenção de todos.

Share this post


Link to post
Share on other sites

E ai galera de boa!

Frederic Macêdo olha depois de muito quebra cabeça descobri a formula perfeita no meu caso:

O Retorno da Pesquisa MYSQL deve ficar assim:


$results[] = array('label' => $row['nome'],'cpf' => $row['cpf']);

A chamada jquery deve ficar dessa forma:

 

$(function(){
$("#nome" ).autocomplete({source:'pesquisanome.php',
       select: function( event, ui ){
        $("#cpf").val(ui.item.codigo);
       }});
});
HTML:
<li><label>Nome:</label>
      <input type="text" name="nome" id="nome" autocomplete="off"/>
</li>
<li>
<label>CPF:</label>
      <input type="text" name="cpf" id="cpf" autocomplete="off"/>
</li>

Para que tudo funcione adequadamente você ainda vai precisar dos seguintes scripts e css:

  <link rel="stylesheet" href="//code.jquery.com/ui/1.8.24/themes/base/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.8.2.js"></script>
  <script src="//code.jquery.com/ui/1.8.24/jquery-ui.js"></script>

Cara você também complicou demais seu SQL demais, olha como é fácil fazer o retorno com o JSON.

 

MySQL,

$db['host'] = "localhost"; 
$db['nome'] = "bd"; 
$db['user'] = "root"; 
$db['pass'] = ""; 
				
mysql_connect($db['host'], $db['user'], $db['pass']);
mysql_select_db($db['nome']);
				
$req = "SELECT * FROM recepcao WHERE recep_nome LIKE '%".$_REQUEST['term']."% ORDER BY recep_nome ASC";	
			
$query = mysql_query($req);

while($row = mysql_fetch_array($query))
{
  $results[] = array('label' => $row['nome'],'cpf'=>$row['cpf']);
}

echo json_encode($results);

Espero ter ajudado.

 

Att.
Leorm

Edited by leorm
  • +1 1

Share this post


Link to post
Share on other sites

Senhores bom dia estou enfrentando o mesmo problema que os colegas, vou explicar melhor.

 

Eu estou precisando retornar valores para alguns inputs, e eu já pesquisei todos as formas de requisição com ajax jquery entre outros porém não estou conseguindo resolver, o que preciso é quando eu digitar no campo txb_MatriculaSolBlock uma Matrícula eu quero que busque no meu banco o resultado do funcionario com essa matricula e eu preencha o campo de txb_NomeSolBlock o o valor retornado, então consigam me ajudar será de grande valia segue os meus códigos

 

Meu aquivo php:

 

<?php


include_once("../includes/conexao.php");


//Esse é o valor que vem do meu formulário
$matSol = mysql_real_escape_string($_REQUEST['txb_MatriculaSolBlock']);


$sqlBuscaSol = mysql_query("SELECT * 
FROM sgb_funcionarios 
WHERE SGB_FUNC_MATRICULA LIKE '%$matSol%' ORDER BY SGB_FUNC_MATRICULA ASC");




$first = true;
while($row = mysql_fetch_array($sqlBuscaSol))
{
$results[] = array('matricula'=>$row['SGB_FUNC_MATRICULA'], 'txb_NomeSolBlock'=>$row['SGB_FUNC_NOME']);
}




echo json_encode($results);


?>




Meu código jquery/javascript:


<script type="text/javascript">


$(document).ready(function(e) {
$('#txb_MatriculaSolBlock').autocomplete({ 
      source: 'BuscaFunc.php', 
      select: function( event, ui ) {
         $("#txb_NomeSolBlock").val(ui.item.nome);
      }
    });
});


</script>






Meus Campos que digito a Matrícula e receberão o retorno:




<input name="txb_MatriculaSolBlock" type="text" id="txb_MatriculaSolBlock" autocomplete="off">


<input name="txb_NomeSolBlock" type="text" id="txb_NomeSolBlock" size="35" autocomplete="off">
Não sei onde está o erro caso puderem me auxiliar eu agradeço.
Edited by Ted k'
Adicionado o BBCode

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.