blog/crear-buscador-php-y-mysql
Por Yal Publicidad
Publicado el Lun 10 de Enero del 2022 a las 22:22
En el siguiente ejemplo realizaremos un buscador simple de alumnos en MySQL y PHP.
Lo primero que realizaremos es crear la tabla 'alumnos.sql' con los siguientes campos:
ID
CODIGO
ALUMNO
CREATE TABLE `yalpubli_ydb`. ( `id` INT(11) NOT NULL AUTO_INCREMENT , `codigo` VARCHAR(10) NOT NULL , `alumno` VARCHAR(155) NOT NULL , PRIMARY KEY (`id`), FULLTEXT (`alumno`)) ENGINE = InnoDB CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;
Debemos tener en cuenta que el campo 'alumno' debe ser creado con índice FULLTEXT. Ahora vamos a crear el buscador en PHP usando dos instrucciones MATCH ... AGAINST ... que encuentra el texto buscado, usando consultas en lenguaje natural parecido a como lo hacen los motores de búsqueda avanzada y LIKE que nos mostrará todos los resultados que en su titulo o en su contenido aparezca la frase de búsqueda tal y como nosotros la introducimos, esto es muy limitado.
extract($_POST); extract($_GET); //cadena de conexion $conn = mysqli_connect("host","usuario","password"); // Recibo las palaras a buscar if (!empty($q)){ //Cuento número de palabras $palabras=explode(" ",$q); $numero=count($palabras); if ($numero==1) { //SI HAY UNA PALABRA SE ESTABLECE UNA INSTRUCION LIKE $where="SELECT * FROM alumnos WHERE alumno LIKE '%$q%' LIMIT 0,50"; } elseif ($numero>1) { //SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO AVANZADO MATCH... AGAINST... $where="SELECT * FROM alumnos WHERE MATCH(alumno) AGAINST('$busqueda') ORDER BY alumno ASC LIMIT 0,50"; } $result=mysqli_query($conn, $where); While($row=mysqli_fetch_array($result)) { //Mostramos los nombres de los alumnos $codigo = $row['codigo']; $alumno = $row['alumno'] . ' (CÓDIGO: ' . $codigo . ')'; echo $alumno."
"; } }