Buscador avanzado con PHP y MySQL: Múltiples palabras
Buscador avanzado con PHP y MySQL. En este articulo veremos la implementación de un sistema de búsqueda avanzada escrito en el lenguaje PHP y con el gestor de base de datos MySQL.
La búsqueda con múltiples palabras suele ser complicado para cualquier programador. Sin embargo, en este artículo lo haremos de una manera muy sencilla.
Buscador avanzado con PHP y MySQL: Múltiples palabras
A continuación, veremos una serie de pasos para lograr nuestro anhelado objetivo.
¿Qué recursos usaran en este sistema?
- a) Lenguaje PHP
- b) Lenguaje HTML5
- c) Librería BootStrap
- d) Base de datos MySQL
¿Qué va a mostrar este artículo?
Mostraremos las técnicas para implementar el motor de búsqueda de palabras clave múltiples en nuestras páginas PHP. Por lo tanto, nuestro objetivo está en buscar una o más palabras clave o incluso frases completas o texto largo especificados por un usuario en el cuadro de texto de búsqueda.
El texto introducido por usuario se buscará en el campo (lenguaje y descripcion) de la tabla MySql con nombre CURSOS y se mostrará el resultado que contenga todas las filas que coincidan con una o más palabras clave.
PASOS PARA INTEGRAR EL BUSCADOR AVANZADO PHP MYSQL
Instalación de la base de datos y la tabla
Para que funcione nuestro buscador se requiere una tabla MySql para poder realizar búsquedas. Por lo tanto, en este ejemplo he creado una tabla muy simple llamada ‘ CURSOS
‘ con dos campos llamado ‘ lenguaje
‘ y ‘descripcion
‘.
CREATE TABLE `cursos` ( `id` int(11) NOT NULL, `lenguaje` varchar(50) NOT NULL, `descripcion` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Tabla cursos' ROW_FORMAT=COMPACT; INSERT INTO `cursos` (`id`, `lenguaje`, `descripcion`) VALUES (1, 'PHP', 'Aprende como crear una aplicación web completa con PHP.'), (2, 'OOP', 'Con esta nueva version usted podra gozar de la velocidad con el docente Luis Muñoz'), (3, 'PHP7', 'A cargo de Doc. Mario Muñoz. PHP es muy intuitivo y muy facil de aprender.'), (4, 'MYSQL', 'MySQL es muy importante para gestionar su informacion. Aprende de manera muy facil.'), (5, 'Java', 'La mayoria de programadores crea sus aplicaciones en este robusto lenguaje PHP.'); ALTER TABLE `cursos` ADD PRIMARY KEY (`id`); ALTER TABLE `cursos` ADD FULLTEXT KEY `Buscar` (`lenguaje`,`descripcion`); ALTER TABLE `cursos` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
Recordemos que debemos de agregar registros a nuestra tabla. Sin embargo, para que el ejercicio sea más dinámico les brindare una tabla con sus respectivos registros.
Creación de un formulario HTML5
Nuestro siguiente punto es crear un formulario HTML. En el cual, agregamos una etiqueta, un cuadro de texto (Tipo Input), y un botón para realizar la búsqueda.
Este formulario HTML será vital y permitirá al usuario digitar una o más palabras clave en el cuadro de texto para su posterior procesamiento. El formulario tendrá una apariencia similar a:

La etiqueta formulario tiene dos atributos: ‘ action
‘ y ‘ method
‘. En el atributo ‘ action
‘ se ha especificado el nombre del fichero donde se mostrará los resultados
El atributo ‘method
‘ será el encargado de recoger la información mediante el método POST.
El atributo name del cuadro de texto. Este nombre se usará para extraer valores de cuadro de texto en código PHP.
Conexión con la base de datos MySql
El siguiente código es para conectarse a MySql Server. Por lo tanto, lo llamaremos ‘conexion.php
‘.
Este fichero es de vital importancia para nuestro motor de búsqueda y se tendrá que configurar de acuerdo a nuestras credenciales de acceso de tu servidor.
<?php $servidor= "localhost"; $usuario= "root"; $password = ""; $nombreBD= "php_buscador"; $db = new mysqli($servidor, $usuario, $password, $nombreBD); if ($db->connect_error) { die("la conexión ha fallado: " . $db->connect_error); } if (!$db->set_charset("utf8")) { printf("Error al cargar el conjunto de caracteres utf8: %s\n", $db->error); exit(); } else { printf("Conjunto de caracteres actual: %s\n", $db->character_set_name()); } ?>
Construyendo la lógica del buscador avanzado
En el cuarto paso después de crear la interfaz de usuario (UI)(formulario) y especificar la configuración de conexión con el servidor MySql. La lógica PHP que implementaremos será el siguiente:
$aKeyword = explode(" ", $_POST['PalabraClave']); $query ="SELECT * FROM cursos WHERE lenguaje like '%" . $aKeyword[0] . "%' OR descripcion like '%" . $aKeyword[0] . "%'"; for($i = 1; $i < count($aKeyword); $i++) { if(!empty($aKeyword[$i])) { $query .= " OR descripcion like '%" . $aKeyword[$i] . "%'"; }
La lógica que usaremos no es tan complicada. Primero tenemos que comprobar si el formulario envía la información de manera correcta.
La palabra clave será almacenada en una variable llamada ‘$aKeyword
‘. Sin embargo, usaremos la función explode()
para almacenarlo como un arreglo. Lo que conseguiremos separar palabra por palabra.
Ahora una vez que tenemos las palabras separadas lo llevamos al ciclo FOR para realizar búsquedas anidadas.
Nota: Si el sistema no encuentra resultados mostrara el siguiente mensaje.

Mostrar el resultado de la búsqueda
El resultado se muestra como tabla HTML5. Está compuesta por tres campos, Numero de resultado, lenguaje, descripción.
La siguiente imagen muestra la búsqueda con palabras clave ‘ Robusto
‘, ‘lenguaje
’, ‘PHP
‘

Conclusión del articulo
Como han podido apreciar, su implementación es realmente sencilla y podemos aplicarlo en diferentes sectores como ser:
- Buscar más de un valor en el campo base de datos.
- Para buscar una frase larga en la base de datos y/o tabla.
- Implementar el cuadro de texto sugerencia automática.
- En artículos largos con bastantes palabras.

DESCARGA DEL SISTEMA
A continuación, les dejare un fichero comprimido para que puedan descargarlo.