Cómo usar un Select Múltiple en PHP

El otro día tuve que utilizar un selector múltiple en una aplicación web PHP para permitir la selección de varios usuarios a través de un desplegable. La duda que tenía era cómo recuperar del contexto los elementos seleccionados una vez enviado el formulario. En google estaba la solución.

Los selectores múltiples almacenan los elementos almacenados en un array, de forma que la página del action del formulario (ya sea la misma u otra que hayamos creado para la gestión de la información) recuperará del contexto los elementos asignados a través del selector múltiple metiéndolos en un array. Veamos un ejemplo.

selector múltiple en PHP

Página del formulario

La página html donde vamos a publicar el formulario:

<body>
<form id="form1" method="POST" action="destino.php">
<label>
<select name="usuarios[]" multiple>
<option value="1">  Usuario 001 </option>
<option value="2">  Usuario 002 </option>
<option value="3">  Usuario 003 </option>
</select>

<input type=submit value="Enviar"></input>
</label>
</form>
</body>

Página del action (destino.php)

La acción del formulario (que puede ser la misma o como en el ejemplo, una nueva página):

<?php

// creamos el array
$usuarios = array();

// recuperamos el elemento usuarios
$usuarios = $_POST['usuarios'];

// lo recorremos e imprimimos
foreach($usuarios as $user){
echo $user.'<br>\n';
}

?>

2 comentarios

  1. Muy útil su ejemplo y muy agradecido. Tengo más de un SELECT que van recibiendo los array escogidos en el anterior y para evitar que vuelvan a ser seleccionados en otro SELECT, debo destacarlos con un color, o bien emplear array_unique, para evitar duplicados, o bien, según he leído en otro foro, usar JavaScript, para que vayan desapareciendo las opciones ya seleccionadas de los SELECT. Si hubiera una forma de hacerlo con PHP, me alegraría mucho. Gracias nuevamente

Deja un comentario

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

What is 13 + 2 ?
Please leave these two fields as-is: