Ir para conteúdo

Arquivado

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

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á!

Compartilhar este post


Link para o post
Compartilhar em outros 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 ?

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros 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'].'}';

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

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.