- Detalles
- Por Juan Padial
- En Programación
- Visto: 10186
Una de las formas en las que se puede construir un formulario XHTML es usando arrays para los campos input. Por ejemplo, se puede tener un formulario con una pregunta dada y las respuestas en varios input tipo checkbox. El uso de arrays nos dará la posibilidad de procesar el formulario con php usando una sola variable para las múltiples respuestas.
El formulario
Por ejemplo, construyamos un formulario para la pregunta ¿Como nos ha conocido?. Habrá distintas respuestas como Google, una web, anuncio en prensa o anuncio en tv. Cada respuesta será un input tipo checkbox.
<form action="...." method="post"><table cellpadding="0" cellspacing="2">
<tr>
<td colspan="2">¿Como nos ha conocido?</td>
</tr>
<tr>
<td><input type="checkbox" name="como[]" id="como1" value="Web" <?php echo in_array('web',$como) ? 'checked="checked"' : ''; ?> /></td>
<td style="padding-left:5px"><label for="como1">Una web</label></td>
</tr
<tr>
<td><input type="checkbox" name="como[]" id="como2" value="Google" <?php echo in_array('Google',$como) ? 'checked="checked"' : ''; ?> /></td>
<td style="padding-left:5px"><label for="como2">Google</label></td>
</tr>
<tr>
<td><input type="checkbox" name="como[]" id="como3" value="Anuncio en prensa" <?php echo in_array('Anuncio en prensa',$como) ? 'checked="checked"' : ''; ?> /></td>
<td style="padding-left:5px"><label for="como3">Anuncio en prensa</label></td>
</tr>
<tr>
<td><input type="checkbox" name="como[]" id="como4" value="Anuncio en tv" <?php echo in_array('Anuncio en tv',$como) ? 'checked="checked"' : ''; ?> /></td>
<td style="padding-left:5px"><label for="como4">Anuncio en tv</label></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="enviar" id="enviar" value="Enviar" /></td>
</tr>
</table></form>
Fíjate como el atributo name es el mismo para cada input tipo checkbox es el mismo: como[]. Los corchetes indican que los campos input forman un array. Fíjate también que el formulario incluye el código php que comprueba si cada input debe estar seleccionado inicialmente según el valor por defecto que se puede definir para el array $como.
El código PHP para procesar del formulario
//inicializamos el array al inicio
$como = count($_POST['como']) ? $_POST['como'] : array();
.
.
.
.
//se imprime cada una de las opciones seleccionadas separadas por coma
echo count($como) ? implode(', ',$como) : 'Nada seleccionado';
En el echo del código anterior se comprueba que haya al menos una opción seleccionada usando la función count() de php y, en caso de haber 1 o más opciones seleccionadas se realizará el implode del array para que la salida sea una lista de las opciones seleccionadas separadas por coma.
Y si quieres hacer algo con cada uno de los valores de los inputs podrías hacer, por ejemplo, un foreach:
if (isset($_POST["como"]) && is_array($_POST["como"]) && count($_POST["como"]) > 0)
{
foreach ($_POST["como"] as $como)
{
echo $como;
echo '<br />';
}
}
Como ves, usando arrays e inputs se puede acortar y hacer más fácil y rápido la construcción y procesamiento de un formulario con php.
Creado el 26 05 2011 Actualizado el 01 03 2013
