Bootstrap Select con buscador en vivo PHP MySQL

Bootstrap Select con buscador en vivo PHP MySQL

Bootstrap Select con buscador en vivo PHP MySQL. En esta publicación daremos solución a la problemática de los select aplicando librerías externas por ejemplo el BOOTSTRAP. Por lo tanto, en algunos casos esto podría causar malestar en el visitante de nuestra web y/o en un sistema web.

Seamos sinceros. Cuando nos registramos en alguna página de cualquier tipo de servicios que hay en internet, nos topamos con un campo de seleccionar país. Sin embargo, comentarles que hay más de 193 países aproximadamente y si nos ponemos a buscar dentro de un select podría ser no tan eficaz.

Para dar solución a esta problemática. En este artículo mostraremos como solucionar este inconveniente de manera dinámica y rápida.

Índice
  1. Bootstrap Select con buscador en vivo PHP MySQL
    1. Estructura de la aplicación
    2. CONCLUSIÓN
    3. DESCARGA

Bootstrap Select con buscador en vivo PHP MySQL

En la siguiente imagen veremos la etiqueta <select> sin usar la librería

Select PHP MySQL
Select PHP MySQL

La solución seria aplicando un pequeño buscador dentro de nuestro lista desplegable (Select) que nos ofrece la librería BootStrap.

Bootstrap Select es una clase que funciona en nuestra lista desplegable. Sin embargo, también nos apoyaremos con JQuery  para agregar funcionalidades adicionales como el buscador a la etiqueta  <select>, que tanto nos preocupa.

La implementación es bastante fácil y no representa consumo de CPU para nuestro servidor.

Estructura de la aplicación

Librerías externas que usaremos

<link rel='stylesheet prefetch' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'>
<link rel='stylesheet prefetch' href='https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.11.2/css/bootstrap-select.min.css'>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.3/js/bootstrap-select.min.js"></script>

Fichero php_paises.sql

Este archivo se encuentra la tabla y los países en el cual almacena la información  que mostraremos en la lista desplegable.

CREATE TABLE IF NOT EXISTS `lista_paises` (
`id_pais` int(11) NOT NULL,
  `iso` varchar(2) DEFAULT NULL,
  `nombre_pais` varchar(120) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=241 DEFAULT CHARSET=utf8;

INSERT INTO `lista_paises` (`id_pais`, `iso`, `nombre_pais`) VALUES
(1, 'AF', 'Afganistán'),
(2, 'AX', 'Islas Gland'),
(3, 'AL', 'Albania'),
(4, 'DE', 'Alemania'),
(5, 'AD', 'Andorra'),
(6, 'AO', 'Angola'),
(7, 'AI', 'Anguilla'),
(8, 'AQ', 'Antártida'),
(9, 'AG', 'Antigua y Barbuda'),
(10, 'AN', 'Antillas Holandesas'),
(11, 'SA', 'Arabia Saudí'),
(12, 'DZ', 'Argelia'),
(13, 'AR', 'Argentina'),
(14, 'AM', 'Armenia'),
(15, 'AW', 'Aruba'),
(16, 'AU', 'Australia'),
(17, 'AT', 'Austria'),
(18, 'AZ', 'Azerbaiyán'),
(19, 'BS', 'Bahamas'),
(20, 'BH', 'Bahréin'),
(21, 'BD', 'Bangladesh'),
(22, 'BB', 'Barbados'),
(23, 'BY', 'Bielorrusia'),
(24, 'BE', 'Bélgica'),
(25, 'BZ', 'Belice'),
(26, 'BJ', 'Benin'),
(27, 'BM', 'Bermudas'),
(28, 'BT', 'Bhután'),
(29, 'BO', 'Bolivia'),
(30, 'BA', 'Bosnia y Herzegovina'),
(31, 'BW', 'Botsuana'),
(32, 'BV', 'Isla Bouvet'),
(33, 'BR', 'Brasil'),
(34, 'BN', 'Brunéi'),
(35, 'BG', 'Bulgaria'),
(36, 'BF', 'Burkina Faso'),
(37, 'BI', 'Burundi'),
(38, 'CV', 'Cabo Verde'),
(39, 'KY', 'Islas Caimán'),
(40, 'KH', 'Camboya'),
(41, 'CM', 'Camerún'),
(42, 'CA', 'Canadá'),
(43, 'CF', 'República Centroafricana'),
(44, 'TD', 'Chad'),
(45, 'CZ', 'República Checa'),
(46, 'CL', 'Chile'),
(47, 'CN', 'China'),
(48, 'CY', 'Chipre'),
(49, 'CX', 'Isla de Navidad'),
(50, 'VA', 'Ciudad del Vaticano'),
(51, 'CC', 'Islas Cocos'),
(52, 'CO', 'Colombia'),
(53, 'KM', 'Comoras'),
(54, 'CD', 'República Democrática del Congo'),
(55, 'CG', 'Congo'),
(56, 'CK', 'Islas Cook'),
(57, 'KP', 'Corea del Norte'),
(58, 'KR', 'Corea del Sur'),
(59, 'CI', 'Costa de Marfil'),
(60, 'CR', 'Costa Rica'),
(61, 'HR', 'Croacia'),
(62, 'CU', 'Cuba'),
(63, 'DK', 'Dinamarca'),
(64, 'DM', 'Dominica'),
(65, 'DO', 'República Dominicana'),
(66, 'EC', 'Ecuador'),
(67, 'EG', 'Egipto'),
(68, 'SV', 'El Salvador'),
(69, 'AE', 'Emiratos Árabes Unidos'),
(70, 'ER', 'Eritrea'),
(71, 'SK', 'Eslovaquia'),
(72, 'SI', 'Eslovenia'),
(73, 'ES', 'España'),
(74, 'UM', 'Islas ultramarinas de Estados Unidos'),
(75, 'US', 'Estados Unidos'),
(76, 'EE', 'Estonia'),
(77, 'ET', 'Etiopía'),
(78, 'FO', 'Islas Feroe'),
(79, 'PH', 'Filipinas'),
(80, 'FI', 'Finlandia'),
(81, 'FJ', 'Fiyi'),
(82, 'FR', 'Francia'),
(83, 'GA', 'Gabón'),
(84, 'GM', 'Gambia'),
(85, 'GE', 'Georgia'),
(86, 'GS', 'Islas Georgias del Sur y Sandwich del Sur'),
(87, 'GH', 'Ghana'),
(88, 'GI', 'Gibraltar'),
(89, 'GD', 'Granada'),
(90, 'GR', 'Grecia'),
(91, 'GL', 'Groenlandia'),
(92, 'GP', 'Guadalupe'),
(93, 'GU', 'Guam'),
(94, 'GT', 'Guatemala'),
(95, 'GF', 'Guayana Francesa'),
(96, 'GN', 'Guinea'),
(97, 'GQ', 'Guinea Ecuatorial'),
(98, 'GW', 'Guinea-Bissau'),
(99, 'GY', 'Guyana'),
(100, 'HT', 'Haití'),
(101, 'HM', 'Islas Heard y McDonald'),
(102, 'HN', 'Honduras'),
(103, 'HK', 'Hong Kong'),
(104, 'HU', 'Hungría'),
(105, 'IN', 'India'),
(106, 'ID', 'Indonesia'),
(107, 'IR', 'Irán'),
(108, 'IQ', 'Iraq'),
(109, 'IE', 'Irlanda'),
(110, 'IS', 'Islandia'),
(111, 'IL', 'Israel'),
(112, 'IT', 'Italia'),
(113, 'JM', 'Jamaica'),
(114, 'JP', 'Japón'),
(115, 'JO', 'Jordania'),
(116, 'KZ', 'Kazajstán'),
(117, 'KE', 'Kenia'),
(118, 'KG', 'Kirguistán'),
(119, 'KI', 'Kiribati'),
(120, 'KW', 'Kuwait'),
(121, 'LA', 'Laos'),
(122, 'LS', 'Lesotho'),
(123, 'LV', 'Letonia'),
(124, 'LB', 'Líbano'),
(125, 'LR', 'Liberia'),
(126, 'LY', 'Libia'),
(127, 'LI', 'Liechtenstein'),
(128, 'LT', 'Lituania'),
(129, 'LU', 'Luxemburgo'),
(130, 'MO', 'Macao'),
(131, 'MK', 'ARY Macedonia'),
(132, 'MG', 'Madagascar'),
(133, 'MY', 'Malasia'),
(134, 'MW', 'Malawi'),
(135, 'MV', 'Maldivas'),
(136, 'ML', 'Malí'),
(137, 'MT', 'Malta'),
(138, 'FK', 'Islas Malvinas'),
(139, 'MP', 'Islas Marianas del Norte'),
(140, 'MA', 'Marruecos'),
(141, 'MH', 'Islas Marshall'),
(142, 'MQ', 'Martinica'),
(143, 'MU', 'Mauricio'),
(144, 'MR', 'Mauritania'),
(145, 'YT', 'Mayotte'),
(146, 'MX', 'México'),
(147, 'FM', 'Micronesia'),
(148, 'MD', 'Moldavia'),
(149, 'MC', 'Mónaco'),
(150, 'MN', 'Mongolia'),
(151, 'MS', 'Montserrat'),
(152, 'MZ', 'Mozambique'),
(153, 'MM', 'Myanmar'),
(154, 'NA', 'Namibia'),
(155, 'NR', 'Nauru'),
(156, 'NP', 'Nepal'),
(157, 'NI', 'Nicaragua'),
(158, 'NE', 'Níger'),
(159, 'NG', 'Nigeria'),
(160, 'NU', 'Niue'),
(161, 'NF', 'Isla Norfolk'),
(162, 'NO', 'Noruega'),
(163, 'NC', 'Nueva Caledonia'),
(164, 'NZ', 'Nueva Zelanda'),
(165, 'OM', 'Omán'),
(166, 'NL', 'Países Bajos'),
(167, 'PK', 'Pakistán'),
(168, 'PW', 'Palau'),
(169, 'PS', 'Palestina'),
(170, 'PA', 'Panamá'),
(171, 'PG', 'Papúa Nueva Guinea'),
(172, 'PY', 'Paraguay'),
(173, 'PE', 'Perú'),
(174, 'PN', 'Islas Pitcairn'),
(175, 'PF', 'Polinesia Francesa'),
(176, 'PL', 'Polonia'),
(177, 'PT', 'Portugal'),
(178, 'PR', 'Puerto Rico'),
(179, 'QA', 'Qatar'),
(180, 'GB', 'Reino Unido'),
(181, 'RE', 'Reunión'),
(182, 'RW', 'Ruanda'),
(183, 'RO', 'Rumania'),
(184, 'RU', 'Rusia'),
(185, 'EH', 'Sahara Occidental'),
(186, 'SB', 'Islas Salomón'),
(187, 'WS', 'Samoa'),
(188, 'AS', 'Samoa Americana'),
(189, 'KN', 'San Cristóbal y Nevis'),
(190, 'SM', 'San Marino'),
(191, 'PM', 'San Pedro y Miquelón'),
(192, 'VC', 'San Vicente y las Granadinas'),
(193, 'SH', 'Santa Helena'),
(194, 'LC', 'Santa Lucía'),
(195, 'ST', 'Santo Tomé y Príncipe'),
(196, 'SN', 'Senegal'),
(197, 'CS', 'Serbia y Montenegro'),
(198, 'SC', 'Seychelles'),
(199, 'SL', 'Sierra Leona'),
(200, 'SG', 'Singapur'),
(201, 'SY', 'Siria'),
(202, 'SO', 'Somalia'),
(203, 'LK', 'Sri Lanka'),
(204, 'SZ', 'Suazilandia'),
(205, 'ZA', 'Sudáfrica'),
(206, 'SD', 'Sudán'),
(207, 'SE', 'Suecia'),
(208, 'CH', 'Suiza'),
(209, 'SR', 'Surinam'),
(210, 'SJ', 'Svalbard y Jan Mayen'),
(211, 'TH', 'Tailandia'),
(212, 'TW', 'Taiwán'),
(213, 'TZ', 'Tanzania'),
(214, 'TJ', 'Tayikistán'),
(215, 'IO', 'Territorio Británico del Océano Índico'),
(216, 'TF', 'Territorios Australes Franceses'),
(217, 'TL', 'Timor Oriental'),
(218, 'TG', 'Togo'),
(219, 'TK', 'Tokelau'),
(220, 'TO', 'Tonga'),
(221, 'TT', 'Trinidad y Tobago'),
(222, 'TN', 'Túnez'),
(223, 'TC', 'Islas Turcas y Caicos'),
(224, 'TM', 'Turkmenistán'),
(225, 'TR', 'Turquía'),
(226, 'TV', 'Tuvalu'),
(227, 'UA', 'Ucrania'),
(228, 'UG', 'Uganda'),
(229, 'UY', 'Uruguay'),
(230, 'UZ', 'Uzbekistán'),
(231, 'VU', 'Vanuatu'),
(232, 'VE', 'Venezuela'),
(233, 'VN', 'Vietnam'),
(234, 'VG', 'Islas Vírgenes Británicas'),
(235, 'VI', 'Islas Vírgenes de los Estados Unidos'),
(236, 'WF', 'Wallis y Futuna'),
(237, 'YE', 'Yemen'),
(238, 'DJ', 'Yibuti'),
(239, 'ZM', 'Zambia'),
(240, 'ZW', 'Zimbabue');

--
-- Indices de la tabla `lista_paises`
--
ALTER TABLE `lista_paises`
 ADD PRIMARY KEY (`id_pais`);

--
-- AUTO_INCREMENT de la tabla `lista_paises`
--
ALTER TABLE `lista_paises`
MODIFY `id_pais` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=241;

Archivo db.php

Fichero encargado de realizar la conexión con la base de datos de una manera sencilla.

<?php
// Conexion a la base de datos para la lista de paises
function connect(){
	return new mysqli("localhost","root","root","php_paises");
}
?>

Poblando la etiqueta <select>

<select class="selectpicker" data-show-subtext="true" data-live-search="true">
<?php
include "db.php";
$con = connect();
if (!$con->set_charset("utf8")) {//asignamos la codificación comprobando que no falle
       die("Error cargando el conjunto de caracteres utf8");
}
$consulta = "SELECT * FROM lista_paises";
$resultado = mysqli_query($con , $consulta);
$contador=0;

while($misdatos = mysqli_fetch_assoc($resultado)){ $contador++;?>
<option data-subtext="<?php echo $misdatos["iso"]; ?>"><?php echo $misdatos["nombre_pais"]; ?></option>
<?php }?>          
</select>
Buscador Select MySQL
Buscador Select MySQL

See the Pen Bootstrap Select Simple Demo by Rene (@RensAfterCoffee) on CodePen.

Bootstrap Select con buscador en vivo PHP MySQL
Bootstrap Select con buscador en vivo PHP MySQL

CONCLUSIÓN

Con esto ya tienen solucionado la problemática de lista despegable implementando este buscador dentro. Para usarlo tenemos un par de opciones

  • Primero usando CDN de la librería. Podemos vincular mediante enlaces externos
  • Segundo descargando la librería desde su página oficial BootStrap e implementarlo dentro de nuestra aplicación.

Ambos métodos tienes sus ventajas y desventajas que ustedes pueden elegir como usar el sistema web.

En este ejemplo, utilizaremos los enlaces que se nos proporciona la librería.

DESCARGA

Descargar Código Fuente

 

Datatables Dropdown PDO, ServerSide, Responsiva

ServerSide
Responsiva adaptable
Opciones de exportación Dropdown
Mensajes usando SweetAlert2
Acciones (Editar, Agregar, Ver, Eliminar)

Resumen
Bootstrap Select con buscador en vivo PHP MySQL
Nombre Articulo
Bootstrap Select con buscador en vivo PHP MySQL
Descripción
Bootstrap Select con buscador en vivo PHP MySQL. En esta publicación daremos solución a la problemática de los select aplicando librerías externas por ejemplo el BOOTSTRAP.
Autor
Nombre del editor
BaulPHP
Logo Editor
  Convertir JSON a CSV con PHP

Si quieres conocer otros artículos parecidos a Bootstrap Select con buscador en vivo PHP MySQL puedes visitar la categoría ¿Qué es PHP y cómo funciona?.

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

    8 Comentarios

  1. Juan carlos dice:

    select2 fue bueno hasta bootstrap 4, con la 5 ya no funcionan muchas de sus caracteristicas, si sabes de algun select parecido a select2... no dejes de publicar el articulo... un saludo.

  2. luk dice:

    Hola, agredecer por tu blog, sin el, me tomaria mucho tiempo encontrar esta y otras soluciones, ya son 3 años revisandolo

  3. Walter dice:

    Buen día, mi pregunta es como obtengo el texto que se esta buscando para filtrarlo y vincularlo a la BD, pues no quiero cargar todos los datos en el select sino lo que vaya escribiendo. me dejo entender? ojajaj. saludos

  4. Fernando dice:

    Buenas tardes.... una consulta Nestor....
    como hago para insertar el id del pais en la base de datos mysql con php ????

    1. Nestor Tapia dice:

      Hola Fernando

      Primeramente tienes que crear un formulario y que contenga una etiqueta select con la propiedad "name"

      Segundo, tienes que crear una conexion con mysql e insertar el valor de la etiqueta select que seria el ID seleccionado por el usuario.

      Aquí, te dejo un Post donde hablo de este temas para insertar registros a MySQL

      https://www.baulphp.com/insertar-datos-mysql-usando-pdo-php/

      Saludos

  5. Anabel dice:

    Muchas gracias ! Esta genial

  6. Jose dice:

    Excelente apoyo!

    1. Nestor Tapia dice:

      Hola Jose,

      Gracias por su comentario, que bueno que te aya servido.

      Un saludo a la distancia.

Deja una respuesta

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

Este sitio web protege su privacidad al adherirse al Reglamento General de Protección de Datos de la Unión Europea (GDPR). No utilizaremos sus datos para ningún propósito que no haya dado su consentimiento. Obtenga más información en nuestra página política de privacidad