Ver Mensaje Individual
  #38 (permalink)  
Antiguo 02/04/2021, 21:30
pilucho
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: live search php

Cita:
Iniciado por Alexis88 Ver Mensaje
Tendrías que añadir otra instancia del objeto de autocompletado y asociarlo a la caja de búsqueda por correo. En cuanto al archivo PHP, puedes hacer la búsqueda por nombre o correo en la misma consulta SQL. Y como supongo que buscas obtener los mismos resultados ya sea buscando por nombre o por correo, puedes emplear una sola función que recoja los datos de la opción seleccionada en la lista de autocompletado y los establezca en las cajas respectivas.

Por ejemplo:

Código HTML:
Ver original
  1.     <section>
  2.         <label>Buscar por nombre:</label>
  3.         <input type="search" name="byName" autofocus />
  4.     </section>
  5.  
  6.     <section>
  7.         <label>Buscar por correo:</label>
  8.         <input type="search" name="byEmail" autofocus />
  9.     </section>
  10.  
  11.     <hr />
  12.  
  13.     <section>
  14.         <label>Resultados seleccionados:</label>
  15.         <p>
  16.             <input type="text" name="nombre" readOnly />                
  17.         </p>
  18.         <p>
  19.             <input type="text" name="correo" readOnly />                
  20.         </p>
  21.     </section>
  22. </form>


Código Javascript:
Ver original
  1. let buscarNom = document.querySelector("[name=byName]"), //<input> de búsqueda por nombre
  2.     buscarCor = document.querySelector("[name=byEmail]"), //<input> de búsqueda por correo
  3.     inputNombre = document.querySelector("[name=nombre]"), //<input> en donde se mostrará el nombre
  4.     inputCorreo = document.querySelector("[name=correo]"), //<input> en donde se mostrará el correo
  5.     autoNombre = new autocomplete(), autoCorreo = new autocomplete(), //Instancias del objeto de autocompletado
  6.     rellenar = function(data){ //Función que recoge los datos seleccionados y los establece en las cajas
  7.         inputNombre.value = data.nombre;
  8.         inputCorreo.value = data.correo;
  9.     };
  10.  
  11. //Instancia del objeto para buscar por nombre
  12. autoNombre.load({
  13.     words: "buscar.php",
  14.     target: buscarNom,
  15.     value: "nombre",
  16.     async: true,
  17.     select: rellenar
  18. });
  19.  
  20. //Instancia del objeto para buscar por correo
  21. autoCorreo.load({
  22.     words: "buscar.php",
  23.     target: buscarCor,
  24.     value: "correo",
  25.     async: true,
  26.     select: rellenar
  27. });

Código PHP:
Ver original
  1. <?php
  2. $mysqli = new mysqli('server', 'user', 'password', 'database');
  3.  
  4. if ($mysqli->connect_errno) exit('No se pudo realizar la conexión: ' . $mysqli->connect_error);
  5.  
  6. //Se emplea la misma variable pues es la que utiliza el objeto de autocompletado
  7. $dato = $mysqli->real_escape_string($_GET['term']);
  8.  
  9. //Se realiza la búsqueda ya sea por nombre o correo
  10. $query = "SELECT nombre, correo FROM personas WHERE nombre LIKE '%$dato%' OR correo LIKE '%$dato%'";
  11. $results = $mysqli->query($query) or exit($mysqli->errno . ': ' . $mysqli->error);
  12. $respuesta = [];
  13.  
  14. if ($results->num_rows){
  15.     while ($rows = $results->fetch_assoc()){
  16.         $respuesta[] = [
  17.             'nombre' => $rows['nombre'], //Se devuelve el nombre
  18.             'correo' => $rows['correo'] //Y el correo
  19.         ];
  20.     }
  21. }
  22.  
  23. echo json_encode($respuesta);
  24. ?>

Aquí puedes probarlo en línea. No olvides adaptarlo a lo que tienes, borrar la caché del navegador, y mostrar aquí cualquier mensaje de error en la consola del navegador que te surja en caso de que no funcione.

Excelente ahora si quedo perfecto muchas gracias.
en esta imagen salen solo estos errores supongo que no es de importancia o si?
https:// prnt.sc/112t8f3