Ver Mensaje Individual
  #22 (permalink)  
Antiguo 01/04/2021, 19:05
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

Voy a tratar de ponerlo lo más simple posible.

En un nuevo proyecto (uno pequeño, de prueba), ten estos archivos:

1. Un archivo HTML:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es">
  3.     <meta charset="utf-8" />
  4.     <title>Buscador</title>
  5. </head>
  6.     <form>
  7.         <section>
  8.             <label>Buscar por nombre:</label>
  9.             <input type="search" name="buscar" autofocus />
  10.         </section>
  11.  
  12.         <section>
  13.             <label>Resultado seleccionado:</label>
  14.             <input type="text" name="nombre" readOnly />
  15.         </section>
  16.     </form>
  17.  
  18.     <script type="text/javascript" src="autocomplete-5.0.js"></script>
  19.     <script type="text/javascript" src="script.js"></script>
  20. </body>
  21. </html>

2. Un archivo JS (en este caso, lo nombraré "script.js"):

Código Javascript:
Ver original
  1. let inputBuscar = document.querySelector("[name=buscar]"),
  2.     inputFinal = document.querySelector("[name=nombre]"),
  3.     autocomplete = new autocomplete();
  4.  
  5. autocomplete.load({
  6.     words: "buscar.php",
  7.     target: inputBuscar,
  8.     value: "nombre",
  9.     async: true,
  10.     select: function(data){
  11.         inputFinal.value = data.nombre;
  12.     }
  13. });

3. Un archivo PHP:

Código PHP:
Ver original
  1. $mysqli = new mysqli('server', 'user', 'password', 'database');
  2.  
  3. if ($mysqli->connect_errno) exit('No se pudo realizar la conexión: ' . $mysqli->connect_error);
  4.  
  5. $dato = $mysqli->real_escape_string($_GET['term']);
  6. $query = "SELECT nombre FROM tabla WHERE nombre LIKE '%$dato%'";
  7. $results = $mysqli->query($query) or exit($mysqli->errno . ': ' . $mysqli->error);
  8. $respuesta = [];
  9.  
  10. if ($results->num_rows){
  11.     while ($rows = $results->fetch_assoc()){
  12.         $respuesta[] = ['nombre' => $rows['nombre']];
  13.     }
  14. }
  15.  
  16. echo json_encode($respuesta);

Ten todos los archivos en el mismo directorio (para fines de la prueba). Para esto, necesitas tener una base de datos que contenga una tabla con el campo "nombre" y, por supuesto, que posea datos para dicho campo. Todo esto tenlo en un nuevo directorio en tu servidor web, y ejecútalo como un proyecto nuevo.

IMPORTANTE: Recuerda que estoy empleando datos de ejemplo, como los datos de conexión a la base de datos, la tabla y el campo de la tabla. Tienes que reemplazarlos por datos reales que estés utilizando. En el caso de que no obtengas resultados, fíjate en la consola del navegador (pulsa la tecla F12 y selecciona la pestaña Console antes de ejecutar el código) para corroborar si se está mostrando algún mensaje de error. En caso de haberlo, por favor, muéstralo acá, de otro modo, no se te podrá ayudar. Si realizas algún cambio, antes de volver a probar es necesario que pulses la combinación de teclas CTRL + F5 para que se limpie la caché del navegador y, de este modo, se ejecute el código actualizado. Trata de seguir lo explicado paso a paso para que no tengas más problemas.

__________________
«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