Foros del Web » Programando para Internet » Jquery »

Autocomplete de jquery y el valor que recibo, necesito id en vez del nombre

Estas en el tema de Autocomplete de jquery y el valor que recibo, necesito id en vez del nombre en el foro de Jquery en Foros del Web. Hola amigos, Tengo un autocomplete con jquery que funciona perfecto. Me muestra todas las series que tengo en una base de datos y cuando selecciones ...
  #1 (permalink)  
Antiguo 09/10/2012, 06:03
 
Fecha de Ingreso: septiembre-2012
Mensajes: 149
Antigüedad: 9 años, 9 meses
Puntos: 3
Autocomplete de jquery y el valor que recibo, necesito id en vez del nombre

Hola amigos,

Tengo un autocomplete con jquery que funciona perfecto. Me muestra todas las series que tengo en una base de datos y cuando selecciones el input coge el nombre de la serie.

El problema es que cuando hago un envio a otra página necesitaría que en vez del nombre me pasara la variable id_serie.

Eso es posible? este es mi codigo:

Código PHP:
<?php
    
    
// PHP5 Implementation - uses MySQLi.
    // mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase');
    
$db = new mysqli('localhost''root' ,'''series');
    
    if(!
$db) {
        
// Show error if we cannot connect.
        
echo 'ERROR: Could not connect to the database.';
    } else {
        
// Is there a posted query string?
        
if(isset($_POST['queryString'])) {
            
$queryString $db->real_escape_string($_POST['queryString']);
            
            
// Is the string length greater than 0?
            
            
if(strlen($queryString) >0) {
                
// Run the query: We use LIKE '$queryString%'
                // The percentage sign is a wild-card, in my example of countries it works like this...
                // $queryString = 'Uni';
                // Returned data = 'United States, United Kindom';
                
                // YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE.
                // eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10
                
                
$query $db->query("SELECT nombre,id_serie FROM a_serie WHERE nombre LIKE '$queryString%' LIMIT 10");
                if(
$query) {
                    
// While there are results loop through them - fetching an Object (i like PHP5 btw!).
                    
while ($result $query ->fetch_object()) {
                        
// Format the results, im using <li> for the list, you can change it.
                        // The onClick function fills the textbox with the result.
                        
                        // YOU MUST CHANGE: $result->value to $result->your_colum
                         
echo '<li onClick="fill(\''.$result->id_serie.'\');">'.$result->nombre.'</li>';
                     }
                } else {
                    echo 
'ERROR: There was a problem with the query.';
                }
            } else {
                
// Dont do anything.
            
// There is a queryString.
        
} else {
            echo 
'There should be no direct access to this script!';
        }
    }
?>

Con esta línea SELECCIONO SERIE, y se muestra el ID, y asi está MAL SOLUCIONADO pero SOLUCIONADO. Querría que se mostrar el nombre y guardara el id por detrás:

Código PHP:
echo '<li onClick="fill(\''.$result->id_serie.'\');">'.$result->nombre.'</li>'

Esto es mi html, aparte del scritp que me devuelve el valor:


Cita:
<input name="return_serie" type="text" class="serie" value='' id="inputString" onKeyUp="lookup(this.value);" onBlur="fill();">

Última edición por Pajaranny; 09/10/2012 a las 06:11
  #2 (permalink)  
Antiguo 09/10/2012, 09:23
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 10 años, 2 meses
Puntos: 319
Respuesta: Autocomplete de jquery y el valor que recibo, necesito id en vez del nombr

Cita:
Querría que se mostrar el nombre y guardara el id por detrás:
tendrias que trabajar con un campo hidden donde guardas el id para lograr tu objetivvo. este campo debes agregarlo y actualizarlo junto con el nombre. saludos
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 09/10/2012, 11:46
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 13 años, 5 meses
Puntos: 36
Respuesta: Autocomplete de jquery y el valor que recibo, necesito id en vez del nombr

Falta que te expliques más, aqui muestras códigos pero ni siquiera muestras como estas envíando la información, lo que dice NSD es una forma viable, pero no explicas bien como lo haces, el id lo pones en un li que casi creo es se pone en el combobox desplegable.

Con la información que tienes lo que se me ocurre es que cuando selecciones la serie, copies el id que viene de la bd en el input hidden como dice NSD y ya al hacer el post va el id que necesitas.

De nuevo tienes que mostrar el código con el que usas el autocomplete, ahí es donde tomas el evento de seleccion de la serie y puedes asignar el id al input.
  #4 (permalink)  
Antiguo 31/07/2013, 23:23
Avatar de exmatuz  
Fecha de Ingreso: mayo-2013
Mensajes: 9
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Autocomplete de jquery y el valor que recibo, necesito id en vez del nombr

Cita:
Iniciado por Reedyseth Ver Mensaje
Falta que te expliques más, aqui muestras códigos pero ni siquiera muestras como estas envíando la información, lo que dice NSD es una forma viable, pero no explicas bien como lo haces, el id lo pones en un li que casi creo es se pone en el combobox desplegable.

Con la información que tienes lo que se me ocurre es que cuando selecciones la serie, copies el id que viene de la bd en el input hidden como dice NSD y ya al hacer el post va el id que necesitas.

De nuevo tienes que mostrar el código con el que usas el autocomplete, ahí es donde tomas el evento de seleccion de la serie y puedes asignar el id al input.

Amigo, como se podria hacer todo eso que explicaste, pero usando json? yo tengo ese mismo problema, tengo un campo donde realizo el autocompletado con jquery de un campo llamado nombre en mi bd , pero quiero capturar el id en un campo oculto del formulario. alguna idea? saludos
  #5 (permalink)  
Antiguo 01/08/2013, 15:09
Avatar de exmatuz  
Fecha de Ingreso: mayo-2013
Mensajes: 9
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Autocomplete de jquery y el valor que recibo, necesito id en vez del nombr

Yo lo logré de esta manera, no se si ya tu lo resolviste

Search.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. if (isset($_GET['term'])){
  4.     $return_arr = array();
  5.  
  6.     try {
  7.         $conn = new PDO('mysql:host=localhost;dbname=db_saga', 'exal', '1990');
  8.         $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  9.  
  10.         $stmt = $conn->prepare("SELECT id_paciente, concat_ws(' ', nombre, apepat, apemat) AS paciente FROM tblc_paciente WHERE concat_ws(' ', nombre, apepat, apemat) LIKE :term");
  11.         $stmt->execute(array('term' => '%'.$_GET['term'].'%'));
  12.  
  13.         while($row = $stmt->fetch()) {
  14.  
  15.            $return_arr[] = array('value' => $row['paciente'], 'id' => $row['id_paciente']);
  16.  
  17.         }
  18.  
  19.     } catch(PDOException $e) {
  20.         echo 'ERROR: ' . $e->getMessage();
  21.     }
  22.  
  23.     header('Content-type: application/json');
  24.     /* Toss back results as json encoded array. */
  25.     echo json_encode($return_arr);
  26. }
  27.  
  28. ?>

index.html

Código HTML:
Ver original
  1.     <meta charset="UTF-8">
  2.     <title>Document</title>
  3.     <link rel="stylesheet" href="css/jquery-ui-1.10.3.custom.min.css">
  4.     <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
  5.     <script type="text/javascript" src="js/jquery-ui-1.10.3.custom.min.js"></script>
  6.     <script type="text/javascript">
  7.     $(function() {
  8.             //autocomplete
  9.             $(".auto").autocomplete({
  10.                 source: "search.php",
  11.                 minLength: 1,
  12.                 select: function(event, data) {
  13.                     $("#id_paciente").val(data.item.id);
  14.                     $(".auto").val(data.item.value);
  15.                 },
  16.             });
  17.         });
  18.  
  19.     </script>
  20. </head>
  21.     <form method="post" action="insert_paciente.php">
  22.         <p><label>paciente:</label><input type='text' id='title' name='title' value='' class='auto'></p>
  23.         <p>Inicio de cita:<label></label><input type='text' id='inicio' name='inicio'></p>
  24.         <p><label>Fin de cita:</label><input type='text' id='fin' name='fin'></p>
  25.         <p><label>Status:</label><input type='text' id='status' name='status'></p>
  26.         <input  type='hidden' id='id_paciente' name='id_paciente'></p>
  27.         <p><label>doctor:</label><input  type='text' id='id_trabajador' name='id_trabajador'></p>
  28.         <input type="submit">
  29.     </form>
  30.  
  31. </body>
  32. </html>

en el input .auto hago la busqueda del nombre, al seleccionar el nombre que busco, y su id se manda a un input hidden.
  #6 (permalink)  
Antiguo 02/08/2013, 05:04
 
Fecha de Ingreso: junio-2009
Mensajes: 78
Antigüedad: 13 años
Puntos: 0
Respuesta: Autocomplete de jquery y el valor que recibo, necesito id en vez del nombr

hola exmatuz
estuve probando tu codigo pero no pude hacerlo funcionar... aunque no creas es exactamente lo que ando buscando, te agradeceria mucho si me pudieras orientar un poco mas al respecto...
gracias
  #7 (permalink)  
Antiguo 02/08/2013, 13:54
Avatar de exmatuz  
Fecha de Ingreso: mayo-2013
Mensajes: 9
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Autocomplete de jquery y el valor que recibo, necesito id en vez del nombr

Bien, creo que le puse cosas de más que no te ivan a servir, te dejo el codigo mas sintetizado:

Código PHP:
Ver original
  1. <?php
  2.  
  3. if (isset($_GET['term'])){
  4.     $return_arr = array();
  5.  
  6.     try {
  7.         $conn = new PDO('mysql:host=localhost;dbname=nombre_db', 'root', 'root');
  8.         $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  9.  
  10.         $stmt = $conn->prepare("SELECT id, nombre FROM tabla WHERE nombre LIKE :term");
  11.         $stmt->execute(array('term' => '%'.$_GET['term'].'%'));
  12.  
  13.         while($row = $stmt->fetch()) {
  14.  
  15.            $return_arr[] = array('value' => $row['nombre'], 'id' => $row['id']);
  16.  
  17.         }
  18.  
  19.     } catch(PDOException $e) {
  20.         echo 'ERROR: ' . $e->getMessage();
  21.     }
  22.  
  23.     header('Content-type: application/json');
  24.    
  25.     echo json_encode($return_arr);
  26. }
  27.  
  28. ?>

Date cuenta que en el array, 'value' toma el valor de nombre, e 'id' toma el valor de id, no debes poner poner por ejemplo, 'nombre' => $row['nombre'], ya que jquery no te reconocerá 'nombre', ya que 'value' e 'id', son como palabras reservadas (o así mas o menos lo interpreto).

Código Javascript:
Ver original
  1. <head>
  2.     <meta charset="UTF-8">
  3.     <title>Document</title>
  4.     <link rel="stylesheet" href="css/jquery-ui-1.10.3.custom.min.css">
  5.     <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
  6.     <script type="text/javascript" src="js/jquery-ui-1.10.3.custom.min.js"></script>
  7.     <script type="text/javascript">
  8.     $(function() {
  9.            
  10.             $(".auto").autocomplete({
  11.                 source: "search.php",
  12.                 minLength: 1,
  13.                 select: function(event, data) {
  14.                     $("#captura_id").val(data.item.id);
  15.                     $(".auto").val(data.item.value);
  16.                 },
  17.             });
  18.         });
  19.  
  20.     </script>
  21. </head>
  22. <body>
  23.     <form method="post" action="insert.php">
  24.         <p><label>nombre:</label><input type='text' id='nombre' name='nombre' value='' class='auto'></p>
  25.         <input  type='text' id='captura_id' name='captura_id'></p>
  26.         <input type="submit">
  27.     </form>
  28.  
  29. </body>
  30. </html>

por razones que no entiendo, en el campo donde hago el autocompletado, si le pongo un id (por ejemplo #auto) no me hace el autocompletado, necesariamente debe ser clase (ejemplo .auto) aun no se porqué.

espero me haya explicado, saludos
  #8 (permalink)  
Antiguo 02/08/2013, 18:07
 
Fecha de Ingreso: junio-2009
Mensajes: 78
Antigüedad: 13 años
Puntos: 0
Respuesta: Autocomplete de jquery y el valor que recibo, necesito id en vez del nombr

Muchisimas gracias.... muchisisisisisisimas gracias... te debo miles....
  #9 (permalink)  
Antiguo 03/08/2013, 02:42
Avatar de vesper_metal90  
Fecha de Ingreso: enero-2013
Mensajes: 103
Antigüedad: 9 años, 5 meses
Puntos: 1
Respuesta: Autocomplete de jquery y el valor que recibo, necesito id en vez del nombr

Hola que tal como estan yo tengo una duda por que usaron JSON
se puede haber usado un return?

Código PHP:
Ver original
  1. echo json_encode($return_arr);

Código PHP:
Ver original
  1. return $return_arr;

Etiquetas: mysql, nombre, recibo, vez, variables, autocompletado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:42.