Lenguaje PHPMYSQL La base de datos

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

  1. 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.

  1. 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:

Formulario buscador avanzado PHP
Formulario buscador avanzado PHP

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.

  1. 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());
}
?>
  1. 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.

Buscador avanzado sin resultados
Buscador avanzado sin resultados
  1. 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

Resultados buscador avanzado PHP
Resultados buscador avanzado PHP
  1. 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.
Buscador avanzado con PHP y MySQL Multiples palabras
Buscador avanzado con PHP y MySQL Multiples palabras

DESCARGA DEL SISTEMA

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

Buscador-avanzado-PHP-MySQL

Mostrar más

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.
Botón volver arriba
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad