Formularios: Enviar Array de un select multiple
Lunes, Septiembre 15th, 2008Hoy he trabajado con un atributo del campo select que no habÃa utilizado aún, el multiple.
Éste nos permite seleccionar no sólo una, sino varias opciones de una lista desplegable.
Me han solicitado un formulario, para una empresa de traducciones, que contenga un campo con los idiomas que ofrecen y que permita al usuario seleccionar más de un idioma con el que trabajar, asà que éste será mi ejemplo de hoy:

Ejemplo
Nota: doy por hecho que ya sabéis crear un formulario simple y enviarlo por email.
1.- Insertamos el select en nuestro formulario:
<select name=”traduccion-meta[]” multiple=”multiple” size=”4″>
<option value=”No”>Seleccione una opción</option>
<option value=”Ingles”>Inglés</option>
<option value=”Ruso”>Ruso</option>
<option value=”Chino”>Chino</option>
<option value=”Frances”>Francés</option>
<option value=”Rumano”>Rumano</option>
<option value=”Japones”>Japonés</option>
</select>
Es importante que en el name pongamos los corchetes [] finales, ya que con esto indicamos que nos va a devolver un Array, si no los pusieramos sólo nos enviarÃa el último campo seleccionado y no nos valdrÃa de nada tener un select multiple.
El atributo multiple=”multiple” es el que nos permite seleccionar varias opciones.
Y con size=”4″ lo que hago es que se me muestren solamente 4 opciones a primera vista, para ver el resto aparecen las barras de desplazamiento, si no indicara el tamaño me saldrÃa un select demasiado grande para mi gusto.
Una vez tenemos nuestro select, pasamos a enviar los datos a través de la función mail() a nuestra dirección de email.
2.- El código para recoger y enviar el contenido de nuestro select multiple es:
foreach ($_POST['traduccion-meta'] as $idioma){
$msg.= $idioma.” - “;
}
Con el foreach recorremos el interior de nuestro Array y en cada vuelta sacamos los idiomas seleccionados y los añadimos al contenido del mensaje del email enviado.
Acordaros que para enviar el contenido de los campos de nuestro formulario lo haciamos asÃ:
$msg.= $_POST['traduccion-meta];
Esta vez no lo podemos hacer asà ya si sólo nos devolverÃa la palabra Array.
Y eso es todo, si no os acordáis de cómo enviar el formulario, echarle un vistazo a mis anteriores artÃculos sobre este tema.
Espero que os sirva de ayuda, cualquier duda ya sabéis,.. a preguntar





