Al estudiar PHP habrá muchos procesos que aprenderás a utilizar y que verás que acaban siendo recurrentes en tu día a día como profesional de este lenguaje de programación. Aprender a cómo mostrar datos MySQL en una lista desplegable Select en PHP será una de estas acciones a las que no tardarás en sacar partido.
Y, aunque antes de aprender a hacerlo puede sonar intimidante, la realidad es que es un proceso más simple de lo que aparenta. Sigue leyendo y te explicaremos paso a paso todo el proceso que te ayudará a llenar Select HTML con MySQL a través del usando PHP.
¿Qué vas a encontrar en este artículo?
¿Cómo mostrar datos de MySQL en lista select en PHP? Paso a paso
Como ya sabrás, la combinación de PHP y MySQL es lo que te va a permitir crear páginas web HTML que sean dinámicas. Es la mejor manera de aportar interacción a tu servicio y así conseguir que los visitantes disfruten de una experiencia más avanzada.
Para mostrar datos de un base de datos en un select con PHP, aplica los siguientes pasos para lograrlo y fíjate en los distintos ejemplos que compartimos contigo.
Paso 1. Crea la tabla de datos con la que trabajarás (si no existe todavía)
El punto de inicio es sencillo y seguro que no tienes problema en avanzar, puesto que solo se trata de la creación de una tabla de datos. No obstante, toma nota del código que necesitas utilizar.
Si te fijas, a partir de este punto, en los ejemplos que usaremos, incorporaremos opciones dinámicamente con el código <option></option> para que se produzca el traslado de información de la base de datos al HTML.
Pero lo primero es disponer de una tabla con datos, algo bastante fácil de hacer si has tomado alguna lección para aprender PHP online. No obstante, si todavía te suena extraño, sigue leyendo y analiza el código para que lo entiendas poco a poco.
CREATE TABLE IF NOT EXISTS ciudades (
id int(11) NOT NULL auto_increment,
ciudades varchar(60) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
--
-- Volcar la base de datos para la tabla `Ciudades`
--
INSERT INTO Ciudades (id, ciudades) VALUES
(1, 'Madrid'),
(2, 'Barcelona'),
(3, 'Zaragoza'),
(4, 'Valencia');
Como puedes ver, hemos utilizado una base de datos de ciudades españolas en las que hay cuatro entradas: Madrid, Barcelona, Zaragoza y Valencia. Con esta tabla ya habremos completado el primer paso de la guía.
Está claro que ser autodidacta es una de las mejores cualidades que podría tener cualquier programador.
Sin embargo, si quieres acelerar al máximo tu aprendizaje, te animamos a ver esta guía para descubrir el mejor curso de PHP desde cero para ti.
Paso 2. Haz la conexión con la base de datos
Para este ejemplo estamos utilizando la extensión MySQLi, que es posible que ya conozcas y que se trata de una de las más recurrentes a la hora de hacer uso de las funciones adicionales disponibles para MySQL.
Seguimos con el tutorial, pero, no obstante, después te hablaremos más de MySQLi por si es la primera vez que la usas y necesitas un poco de información extra.
En este paso, lo único que tienes que hacer es añadir esta línea de código:
// $mysqli = new mysqli('localhost', 'usuario', 'password', 'base_de_datos');
$mysqli = new mysqli('localhost', 'root', '', 'db_contact');
Aprovechamos para recordarte que, el ejemplo que mostramos sería para hacer pruebas con tu localhost. Son conceptos básicos que nunca está de más recordar y que acabarán siendo naturales para ti una vez hayas aprendido a usar PHP en profundidad.
Paso 3. Obtén los valores de la tabla
Seguimos utilizando MySQLi, en esta ocasión con la intención de seleccionar la tabla que hemos creado en el paso 1. El código que tienes que utilizar es el siguiente:
$query = $mysqli -> query ("SELECT * FROM ciudades");
while ($valores = mysqli_fetch_array($query)) {
echo '<option value="'.$valores[id].'">'.$valores[ciudades].'</option>';
}
Como habrás visto, hemos utilizado la función “while” con la intención de hacer un bucle que recorra los resultados de la tabla. Dentro del while, lo que se hace es printar la lista desplegable con los datos de la tabla fila por fila. Todos los registros que haya en la tabla aparecerán una vez el código se ponga en funcionamiento.
Paso 4. Ejemplo completo con todo el código
Para que lo veas más claro, te enseñamos ahora el código completo de todo lo que te hemos explicado en los pasos anteriores. En este código se incluye tanto la conexión que haces entre la base de datos y el PHP, como la parte de código HTML y el mostrado de los datos que se recogen de la tabla.
<?php
// $mysqli = new mysqli('localhost', 'usuario', 'password', 'base_de_datos');
$mysqli = new mysqli('localhost', 'root', '', 'db_contact');
?>
<html>
<head>
<title>Prueba con una lista y menú desplegable</title>
<meta charset="utf-8" />
</head>
<body>
<div align="center">
<p>Frase que antecede al menú desplegable (Ejemplo: "Elige tu ciudad de la lista"):</p>
<p>Ciudades:
<select>
<option value="0">Selecciona:</option>
<?php
$query = $mysqli -> query ("SELECT * FROM ciudades");
while ($valores = mysqli_fetch_array($query)) {
echo '<option value="'.$valores['id'].'">'.$valores['ciudades'].'</option>';
}
?>
</select>
<button>Enviar</button>
</p>
</div>
</body>
¿Cómo llenar select HTML utilizando PDO?
En el ejemplo anterior te hemos explicado el proceso mediante la extensión MySQLi, ya que es la más utilizada y el procedimiento que tiene más volumen de aplicaciones. No obstante, también puedes llevar a cabo este proceso con PDO, que es otra forma de sacar partido extra a MySQL. Sigue estos pasos para poder aplicarlo de esta manera alternativa.
Paso 1. Conecta PDO con MySQL
Una de las ventajas de trabajar con PDO es que te puedes beneficiar de un nivel de seguridad superior. Usa este código para hacer la conexión:
$usuario = 'root';
$password = '';
$db = new PDO('mysql:host=localhost;dbname=php_llenarselect', $usuario, $password);
Paso 2. Utiliza PDO para dirigir la consulta a la base de datos
Ya tienes la conexión hecha entre MySQL y PDO, de forma que ahora el siguiente paso que tienes que dar es solicitar la aparición de los datos que se encuntran en la tabla. Esto también se simplifica con un còdigo muy sencillo.
Ten en cuenta que continuamos usando la misma tabla del ejemplo anterior, la de las ciudades.
$query = $db->prepare("SELECT * FROM ciudades");
$query->execute();
$data = $query->fetchAll();
Con esto le estamos mandando poner en Select la lista de la tabla y, al mismo tiempo, le estamos indicando que vuelque todas las opciones sin ninguna excepción.
Paso 3. Implementa una alternativa a while para mostrar los resultados
En el ejemplo anterior hemos utilizado while como función para mostrar los distintos resultados, pero hay opciones alternativas. Una de ellas es el comando “foreach”, el cual también puedes utilizar aplicándolo con sencillez así:
foreach ($data as $valores):
echo '<option value="'.$valores['id'].'">'.$valores["ciudades"].'</option>';
endforeach;
Lo que estarás haciendo con todo este proceso en PDO es aumentar la seguridad y mantener el buen rendimiento del volcado de información de la base de datos en la lista desplegable.
Paso 4. Código completo del ejemplo
Y, como hemos hecho antes, te mostramos todo el código para que puedas usarlo como referencia. Como siempre te indicamos, fíjate bien en todas las funciones del código y en que los valores están introducidos de forma correcta.
<?php
// Verificamos la conexión con el servidor y la base de datos
$usuario = 'root';
$password = '';
$db = new PDO('mysql:host=localhost;dbname=php_llenarselect', $usuario, $password);
?>
<!DOCTYPE html>
<html>
<head>
<title>Prueba para hacer un menú desplegable</title>
<meta charset="utf-8" />
</head>
<body>
<div align="center">
<p>Elige una ciudad de este menú:</p>
<p>Ciudades:
<select>
<option value="0">Elige:</option>
<?php
$query = $db->prepare("SELECT * FROM ciudades");
$query->execute();
$data = $query->fetchAll();
foreach ($data as $valores) :
echo '<option value="' . $valores['id'] . '">' . $valores["ciudades"] . '</option>';
endforeach;
?>
</select>
<button>Enviar</button>
</p>
</div>
</body>
</html>
Si te ha resultado demasiado complejo este tutorial, te recomendamos consultar el listado de mejores curso de PHP y MySql desde cero que te ofrecemos en esta web.
¿Qué son las extensiones MySQLi y PDO?
Si has seguido nuestros ejemplos, habrás visto que cada uno de ellos se lleva a cabo con una extensión. En el primero de los casos es MySQLi y, en el segundo, PDO. Cada una de las extensiones tiene ventajas y características concretas.
A continuación, te explicamos algo más de cada una de ellas para que entiendas por qué son las elegidas para mostrar los datos de MySQL en listas desplegables con PHP.
Ventajas y características de MySQLi
MySQLi es la versión más avanzada de MySQL, en la cual se han implementado mejoras y añadidos con la intención de aportar un rendimiento superior.
Debido a ello, hay pocos motivos por los que no vayas a terminar usando MySQLi en la mayor parte de funciones y procesos que tengas que realizar con bases de datos y PHP.
Tiene, al mismo tiempo, una interfaz enfocada a objetos y procedural, permite declaraciones preparadas, grupos de declaraciones, transacciones y tiene más compatibilidad de servidores. Por otra parte, se incluyen opciones de depuración adicionales para unos mejores resultados.
Está incluido en PHP a partir de la versión 5 y su código fuente lo puedes encontrar en la ruta “ext/mysqli”.
Ventajas y características de PDO
El uso de PDO proporciona notables mejoras, como una mayor facilidad de uso, comodidad y seguridad.
Otra de las ventajas es la flexibilidad que te aporta para que utilices cualquier servidor de base de datos, lo que significa que no estás limitado al uso de MySQL.
El cambio que tendrás que hacer en el código PHP en este tipo de caso no será realmente complejo, por lo que te puede abrir distintas puertas. Lo único que debes tener en cuenta sobre PDO es que no dispone de compatibilidad con todas las funciones más avanzadas de MySQL, por lo que es muy posible que, para esos casos concretos, utilices MySQLi.
En el día a día, lo más probable es que combines ambas herramientas dependiendo de la situación. El código fuente de PDO está en la ruta “ext/pdo”. Como detalle adicional, es importante saber que PDO dispone de drivers con los que se habilitan algunas de sus funciones.
Por ejemplo, para hacer el cambio a otro servidor de base de datos tal y como hemos mencionado, necesitarás usar el driver correspondiente a esa compatibilidad. Es lo que ocurrirá, entre otros casos, si quieres cambiar MySQL por Firebird. Hay muchos drivers que facilitan el aprovechamiento de PDO de distintas maneras.