index.php?id=116
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."
";
}
}