Lenguaje PHP

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

Selección múltiple desplegable PHP
Selección múltiple desplegable PHP

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

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

Selección múltiple desplegable PHP con búsqueda en MySQL
Selección múltiple desplegable PHP con búsqueda en MySQL

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

 

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

Deja una respuesta

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

Botón volver arriba