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

Cita:
Iniciado por Alexis88 Ver Mensaje
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.


copie tal y como esta en el ejemplo. cambie los datos de conexión hasta incluí ""include_once 'consultas.php';"" por si faltara y nada no se ve nada
no visualiza en el campo de busqueda.


tabla de ejemplo:
Código SQL:
Ver original
  1. CREATE TABLE `buscar` (
  2.   `id` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `nombre` VARCHAR(150) COLLATE utf8_unicode_ci NOT NULL,
  4.   `apellido` VARCHAR(150) COLLATE utf8_unicode_ci NOT NULL,
  5.   `email` VARCHAR(150) COLLATE utf8_unicode_ci NOT NULL,
  6.   `foto` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL,
  7.   PRIMARY KEY  (`id`)
  8. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;
  9.  
  10. --
  11. -- Volcar la base de datos para la tabla `buscar`
  12. --
  13.  
  14. INSERT INTO `buscar` VALUES (1, 'Juan', 'Perez Fernandez', '[email protected]', 'juan.jpg');
  15. INSERT INTO `buscar` VALUES (2, 'Maria', 'Rodriguez Zegarra', '[email protected]', 'maria.jpg');
  16. INSERT INTO `buscar` VALUES (3, 'Estela', 'Ramirez Villanueva', '[email protected]', 'estela.jpg');
  17. INSERT INTO `buscar` VALUES (4, 'Fabiola', 'Bartens Amaro', '[email protected]', 'fabiola.jpg');
  18. INSERT INTO `buscar` VALUES (5, 'Gonzalo', 'Figueroa Suarez', '[email protected]', 'gonzalo.jpg');