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.

Deja un comentario

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

Scroll al inicio