Crear buscador avanzado con PHP y MySQL

Crear buscador avanzado con PHP y MySQL. Vamos a crear un tutorial que nos ayudara a crear una funcionalidad de búsqueda avanzada con PHP y MySQL. Por lo tanto, veremos los puntos importantes y arreglos que debemos de integrar.

¿Como funciona el buscador avanzado PHP y MySQL?

Vamos a detallar varios pasos y crearemos un formulario PHP que tome entrada por parte del usuario y busque en la tabla MySQL.

Crear buscador avanzado con PHP

La búsqueda avanzada proporciona más opciones al usuario final para filtrar el resultado de la búsqueda.

Pasos para implementar la búsqueda avanzada PHP MySQL

  • Cree una base de datos MySQL y poblar con registros.
  • Maquetar un formulario de búsqueda usando PHP.
  • Conexión con la base de datos MySQL.
  • Agregar seguridad a la consulta de MySQL colocando mysqli_real_escape_string.

Crear una base de datos y una tabla MySQL

Necesitamos crear una base de datos en el servidor MySQL. Cree una tabla de empleados en la base de datos MySQL. Además, puede importar la siguiente consulta SQL en MySQL

CREATE TABLE `empleados` (
`id` bigint(20) UNSIGNED NOT NULL,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`age` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Volcado de datos para la tabla `empleados`
--

INSERT INTO `empleados` (`id`, `name`, `age`, `salary`, `created_at`, `updated_at`) VALUES
(1, 'Tiger Nixon', 61, 320800, NULL, NULL),
(2, 'Garrett Winters', 63, 170750, NULL, NULL),
(3, 'Ashton Cox', 66, 86000, NULL, NULL),
(4, 'Cedric Kelly', 22, 433060, NULL, NULL),
(5, 'Airi Satou', 33, 162700, NULL, NULL),
(6, 'Brielle Williamson', 61, 372000, NULL, NULL),
(7, 'Herrod Chandler', 59, 137500, NULL, NULL),
(8, 'Rhona Davidson', 55, 327900, NULL, NULL),
(9, 'Colleen Hurst', 39, 205500, NULL, NULL),
(10, 'Sonya Frost', 23, 103600, NULL, NULL),
(11, 'Jena Gaines', 30, 90560, NULL, NULL),
(12, 'Quinn Flynn', 22, 342000, NULL, NULL),
(13, 'Charde Marshall', 36, 470600, NULL, NULL),
(14, 'Haley Kennedy', 43, 313500, NULL, NULL),
(15, 'Tatyana Fitzpatrick', 19, 385750, NULL, NULL),
(16, 'Michael Silva', 66, 198500, NULL, NULL),
(17, 'Paul Byrd', 64, 725000, NULL, NULL),
(18, 'Gloria Little', 59, 237500, NULL, NULL),
(19, 'Bradley Greer', 41, 132000, NULL, NULL),
(20, 'Dai Rios', 35, 217500, NULL, NULL);

--
-- Indices de la tabla `empleados`
--
ALTER TABLE `empleados`
ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT de la tabla `empleados`
--
ALTER TABLE `empleados`
MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21;

Formulario HTML

Para poder buscar necesitamos un formulario HTML para tomar entradas del usuario final y enviar los datos del formulario. Sin embargo, tenemos que crear los campos de entrada de nombre, edad y salario para obtener información de los usuarios.

<form class="advanced-search-form" method="post" action="proceso.php">
<div class="form-group">
<label for="">Empleado</label>
<input type="name" name="search[name]" value="<?php echo $name; ?>">
</div>
<div class="form-group">
<label for="">Edad</label>
<input type="age" name="search[age]" value="<?php echo $age; ?>">
</div>
<div class="form-group">
<label for="">Salario</label>
<input type="salary" name="search[salary]" value="<?php echo $salary; ?>">
</div>
<div class="form-group">
<input type="submit" value="Search">
</div>
</form>

Código PHP para enviar datos

Crearemos un archivo llamado proceso.php y dentro de este archivo procesaremos los datos enviados desde el formulario HTML y que reciba el código de las entradas del formulario HTML y forme una consulta MySQL con la condición de búsqueda avanzada:

<?php

$conn = mysqli_connect("localhost", "root", "", "baul_buscador");
$queryCondition = " WHERE ";
if(!empty($_POST["search"])) {
foreach($_POST["search"] as $k=>$v){
if(!empty($v)) {
$v = mysqli_real_escape_string($v)
if(!empty($queryCondition)) {
$queryCondition .= " AND ";
} else {
$queryCondition .= " WHERE ";
}

$queryCondition .= $v ." like '%$v%'";
}
}
$sql = "SELECT * FROM empleados " . $queryCondition;
$result = mysqli_query($conn,$sql);
?>

Conclusión

Hemos aprendido a implementar un buscador avanzado usando el lenguaje PHP y MySQL. Sin embargo, se puede migrar a PDO y personalizar los resultados de la búsqueda en la base de datos.
Espero que esta breve explicación les ayude en sus proyectos web.

Me fascina la programación en diversos lenguajes y mas aún si son sistemas web o páginas web.

Entradas relacionadas

PHP Introducción

PHP Introducción

El código PHP se ejecuta en el servidor. ¿Qué es PHP? PHP es un acrónimo de «PHP: preprocesador de hipertexto» PHP es un lenguaje de secuencias de…

Eliminar un elemento de un array en PHP

Eliminar un elemento de un array en PHP

Eliminar un elemento de un array en PHP. Hay diferentes formas de eliminar un elemento de matriz, donde algunas son más útiles que otras, todo depende de…

Cómo recortar texto usando PHP

Cómo recortar texto usando PHP

Cómo recortar texto usando PHP. Si necesitas cortar una cadena de texto o párrafos en PHP estás en el lugar correcto. En este artículo voy a enseñarte…

Convertir formato de fecha en PHP más ejemplos

Convertir formato de fecha en PHP más ejemplos

Convertir formato de fecha en PHP. Si estas tratando de convertir una fecha de yyyy-mm-dd a dd-mm-yyyy, recuerda que en este articulo abordaremos este tema ampliamente hasta…

Diferencias entre Echo y Print en PHP

Diferencias entre Echo y Print en PHP

Diferencias entre Echo y Print. Estas son usadas casi indistintamente para imprimir contenido en pantalla en el lenguaje PHP, por ejemplo, que queremos imprimir una cadena o…

Variable global en una función PHP

Variable global en una función PHP

Variable global en una función PHP. Existen varias formas de pasar variables a una función PHP. Sin embargo, de acuerdo con la mayoría de las reglas de…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *