Ver Mensaje Individual
  #32 (permalink)  
Antiguo 02/04/2021, 17:25
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: live search php

Si lo que deseas es tomar más datos desde la consulta y establecerlos en otras cajas de texto, solo necesitas hacer lo siguiente:

Supongamos que, además del nombre, se va a tomar el apellido, y quiero colocar dicho dato en otro campo, primero necesito tomarlo a partir de su identificador; luego, en el método select establezco los valores que retorna la consulta en los respectivos campos.

Código HTML:
Ver original
  1.     <section>
  2.         <label>Buscar por nombre:</label>
  3.         <input type="search" name="buscar" autofocus />
  4.     </section>
  5.  
  6.     <section>
  7.         <label>Resultados seleccionados:</label>
  8.         <input type="text" name="nombre" readOnly />
  9.         <input type="text" name="apellido" readOnly />
  10.     </section>
  11. </form>

Código Javascript:
Ver original
  1. let inputBuscar = document.querySelector("[name=buscar]"),
  2.     inputNombre = document.querySelector("[name=nombre]"), //El <input> del nombre
  3.     inputApellido = document.querySelector("[name=apellido]"), //El <input> del apellido
  4.     auto = new autocomplete();
  5.  
  6. auto.load({
  7.     words: "buscar.php",
  8.     target: inputBuscar,
  9.     value: "nombre", //Esto solo se utiliza para indicar qué dato se va a mostrar en la lista desplegable
  10.     async: true,
  11.     select: function(data){
  12.         inputNombre.value = data.nombre; //Aquí establezco el nombre
  13.         inputApellido.value = data.apellido; //Y aquí el apellido
  14.     }
  15. });

Código PHP:
Ver original
  1. <?php
  2. $mysqli = new mysqli('localhost', 'root', '', 'testing');
  3.  
  4. if ($mysqli->connect_errno) exit('No se pudo realizar la conexión: ' . $mysqli->connect_error);
  5.  
  6. $dato = $mysqli->real_escape_string($_GET['term']);
  7. $query = "SELECT * FROM buscar WHERE nombre LIKE '%$dato%'";
  8. $results = $mysqli->query($query) or exit($mysqli->errno . ': ' . $mysqli->error);
  9. $respuesta = [];
  10.  
  11. if ($results->num_rows){
  12.     while ($rows = $results->fetch_assoc()){
  13.         $respuesta[] = [
  14.             'nombre' => $rows['nombre'], //El nombre
  15.             'apellido' => $rows['apellido'] //El apellido
  16.         ];
  17.     }
  18. }
  19.  
  20. echo json_encode($respuesta);
  21. ?>

Fíjate que ya no empleo la variable inputFinal, la cual estabas repitiendo, sino que uso inputNombre para establecer el nombre, e inputApellido para el apellido.

IMPORTANTE: Debido a que se está realizando un cambio a nivel de la capa de presentación (JavaScript y HTML), necesitas actualizar la ventana con la combinación de teclas CTRL + F5 para que se ejecute el código actualizado. No olvides colocar aquí el mensaje de error que se muestra en la consola del navegador en caso de que no funcione.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand