Selección múltiple desplegable PHP con búsqueda en MySQL
Selección múltiple desplegable PHP con búsqueda en MySQL. La búsqueda y los filtros se requieren para reducir los resultados basándose en palabras claves. En esta publicación les mostrare los pormenores para la implementación de un sistema basado en búsquedas de listas múltiples usando PHP, HTML y MySQL.
Este filtro de búsqueda está basado en la selección múltiple de varios campos. Por lo tanto, podemos crear una búsqueda a partir de una múltiple selección que el usuario desea.
Selección múltiple desplegable PHP con búsqueda en MySQL
También necesitaremos de un formulario escrito con HTML5 para recoger la información que luego procesaremos con el PHP para realizar las búsquedas. Básicamente, usaremos dos tipos de elementos de formulario llamado «select múltiples».
Por otro lado, una base de datos para almacenar la información, en el cual realizaremos consultas de varios puntos. Por lo tanto, nuestra tabla contendrá las siguientes columnas que detallaremos a continuación.
- id
- Nombres
- Genero
- Profesión
- Pais
Componentes del sistema búsqueda select múltiple
- La base de datos y su respectiva tabla
CREATE TABLE `tabla_clientes` ( `id` int(11) NOT NULL, `Nombres` varchar(200) NOT NULL, `Genero` varchar(10) NOT NULL, `Profesion` varchar(200) NOT NULL, `Pais` varchar(200) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Tabla de Clientes Internacionales'; INSERT INTO `tabla_clientes` (`id`, `Nombres`, `Genero`, `Profesion`, `Pais`) VALUES (1, 'Mario Corima', 'Masculino', 'Ingeniero', 'India'), (2, 'Maria Jany', 'Femenino', 'Marketing', 'Mexico'), (3, 'Marcos Fuentes', 'Masculino', 'Programador', 'Colombia'), (4, 'Carlos Hume', 'Masculino', 'Docente', 'Argentina'), (5, 'Tomas Kari', 'Masculino', 'Biologo', 'Ecuador'), (6, 'Kamila Kan', 'Femenino', 'Modelo', 'Panama'); ALTER TABLE `tabla_clientes` ADD PRIMARY KEY (`id`); ALTER TABLE `tabla_clientes` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
2. Index.php: Formulario HTML5
<form method="POST" name="Busqueda" action="index.php" class="form-inline"> <div class="form-group mx-sm-3 mb-2"> <select name="paises[]" multiple="multiple" class="form-control"> <option value="0" >Seleccione Paises</option> <?php if (! empty($PaisesResultado)) { foreach ($PaisesResultado as $key => $value) { echo '<option value="' . $PaisesResultado[$key]['Pais'].'">'.$PaisesResultado[$key]['Pais'].'</option>'; } } ?> </select> </div> <div class="form-group mx-sm-3 mb-2"> <select name="profesion[]" multiple="multiple" class="form-control"> <option value="0">Seleccione Profesión</option> <?php if (! empty($ProfesionResultado)) { foreach ($ProfesionResultado as $keyy => $value) { echo '<option value="' . $ProfesionResultado[$keyy]['Profesion'] . '">' . $ProfesionResultado[$keyy]['Profesion'] . '</option>'; } } ?> </select> </div> <button class="btn btn-primary">Buscar</button> </form>
Mostrando resultados en el navegador a través de tablas HTML
<?php if ((! empty($_POST['paises'])) or (! empty($_POST['profesion'])) ) {?> <table class="table"> <thead class="thead-dark"> <tr> <th><strong>Nombres</strong></th> <th><strong>Genero</strong></th> <th><strong>Profesión</strong></th> <th><strong>Pais(es)</strong></th> </tr> </thead> <tbody> <?php $query = "SELECT * from tabla_clientes"; $i = 0; $paises=""; $union=""; if (! empty($_POST['paises'])){ $seleccionCount = count($_POST['paises']); $seleccion = ""; while ($i < $seleccionCount) { $seleccion = $seleccion . "'" . $_POST['paises'][$i] . "'"; if ($i < $seleccionCount - 1) { $seleccion = $seleccion . ", "; } $i++; $paises="Pais in (".$seleccion.")"; } } $miprofesion=""; if (!empty($_POST['profesion'])) { $sa = count($_POST['profesion']); $pseleccionCount = count($_POST['profesion']); //Profesion $ii = 0; $pseleccion = ""; while ($ii < $pseleccionCount) { $pseleccion = $pseleccion . "'" . $_POST['profesion'][$ii] . "'"; if ($ii < $pseleccionCount - 1) { $pseleccion = $pseleccion . ", "; } $ii++; } $miprofesion=" Profesion in (".$pseleccion.")"; } // cierra post profesion if ((isset($_POST['paises'])) && (isset($_POST['profesion'])) ) { if (($_POST['paises']>=1) &&($_POST['profesion']>=1) ) { $union=" and "; } } $query = $query." WHERE $paises $union $miprofesion"; $result = $db_handle->runQuery($query); } if (! empty($result)) { // Mostramos resultados de la busqueda foreach ($result as $key => $value) { ?> <tr> <td><?php echo $result[$key]['Nombres']; ?></td> <td><?php echo $result[$key]['Genero']; ?></td> <td><?php echo $result[$key]['Profesion']; ?></td> <td><?php echo $result[$key]['Pais']; ?></td> </tr> <?php } ?> <?php } ?> </tbody> </table>
Filtro de búsqueda HTML con menú desplegable de selección múltiple
MySQL seleccione Query para filtrar los resultados de base de datos basados en países seleccionados. Por lo tanto, para realizar la búsqueda deben de seleccionar varios elementos de la lista y podemos apoyarnos en la tecla SHIFT o la tecla CONTROL de nuestro teclado físico.
CONCLUSIÓN
La utilización de este método de filtro en algunos casos es requerida por las empresas para realizar filtros en sus sistemas web. Por lo tanto, con esta pequeña explicación ya podrán implementarlo con total normalidad.
Es muy recomendable su uso para estos tipos de filtros.
DESCARGA
Descargar Código Fuente