Una de las formas en las que se puede construir un formulario HTML es usando arrays para los campos input. Por ejemplo, se puede tener un formulario con una pregunta 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 array para las múltiples respuestas.

El formulario

Construyamos como ejemplo un formulario para recoger las respuestas a la pregunta ¿Como nos has conocido?. Las posibles respuestas van a ser Google, una web, anuncio en prensa y anuncio en tv. Cada respuesta será un input tipo checkbox. En este caso tiene sentido agrupar todas las respuestas en un array pues son los distintos valores de una misma opción.

<form action="demoform.php" method="get">

	<input type="checkbox" name="como[]" id="como1" value="Web">
	<label for="como1">Una web</label>

	<input type="checkbox" name="como[]" id="como2" value="Google">
	<label for="como2">Google</label>

	<input type="checkbox" name="como[]" id="como3" value="Anuncio en prensa">
	<label for="como3">Anuncio en prensa</label>

	<input type="checkbox" name="como[]" id="como4" value="Anuncio en tv">
	<label for="como4">Anuncio en tv</label>

	<button type="submit">Enviar</button>

</form>

Fíjate como el atributo name es el mismo para cada checkbox: como[]. Los corchetes indican que todos esos campos input forman un array. Es decir, hay que poner el mismo atributo name seguido de [] en cada input que quieras que forme parte del mismo array. Si se envía el formulario mediante GET podrás ver que se envían en forma de cadena con este aspecto: name[]=valor1&name[]=valor2&name[]=valor3. Por ejemplo, si en el formulario anterior se seleccionaran “Google” y “Anuncio en tv”: como[]=Google&como[]=TV.

Procesamiento en PHP

El formulario anterior se envía mediante método GET, así que nuestro array como[] estará almacenado en $_GET['como']. Es importante notar que $_GET['como'] será un array no asociativo con los distintos valores enviados en como[]. Por ejemplo, si se seleccionaron “Google” y “Anuncio en tv”, $_GET['como'] será igual a array("Google", "TV").

Así que podemos capturar los valores seleccionados y procesar el formulario de forma sencilla. Por ejemplo, podemos construir una lista con las opciones seleccionadas:

if ( !empty($_GET["como"]) && is_array($_GET["como"]) ) { 
    echo "<ul>";
    foreach ( $_GET["como"] as $como ) { 
            echo "<li>";
            echo $como; 
            echo "</li>"; 
     }
     echo "</ul>";
}

En el código anterior primer comprobamos que se recibe $_GET["como"], que no tiene un valor vacío y que es un array (si no $_GET["como"] no es un array, no podría contener datos de nuestro formulario pues como lo habíamos construído como array). Después hacemos un loop foreach sobre cada valor del array para construir la lista.

Como ves, usando arrays e inputs se puede hacer más fácil y rápida la construcción y procesamiento de un formulario cuándo cada input representa una opción para un mismo campo. Esta estructura también es más coherente ya que si varios valores son opciones de un mismo elemento, el array es un tipo de variable muy adecuada.

Descarga el ejemplo de Formulario con array de inputs y procesamiento en PHP
  • daniel

    amigo y como hago para validar esos campos en forma de vector en javascript

  • Juan

    Muchas Gracias! compa

  • Yei Yei Padilla

    Muchas gracias, una pregunta, si aparte de la variable como quisiera agregar otra , cómo quedaría

  • ¡Soy tu padre!

    Gracias, me fue de mucha ayuda