Ver Mensaje Individual
  #7 (permalink)  
Antiguo 02/08/2013, 13:54
Avatar de exmatuz
exmatuz
 
Fecha de Ingreso: mayo-2013
Mensajes: 9
Antigüedad: 11 años, 6 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