domingo, 27 de enero de 2013

Recoger por POST una lista de checkbox en PHP

Buenas a tod@s señoras y señores!!!

Hoy explicaré como recoger una lista de checkbox de un formulario HTML, utilizando un POST en PHP.

Lo primero es crear el formulario de la siguiente forma:

<form action="recoger_checkbox.php" method="post">
     <input type="checkbox" name="numero[]" value="1"/> 1 <br/>
     <input type="checkbox" name="numero[]" value="2"/> 2 <br/>
     <input type="checkbox" name="numero[]" value="3"/> 3 <br/>
     <input type="checkbox" name="numero[]" value="4"/> 4 <br/>
     <input type="submit">
</form>

Véase que en el parámetro name hemos escrito numero[], con eso "[]" conseguiremos pasar por post la cadena de valores que el usuario elija, dentro de la cadena estarán los valores de value.
Obtendremos algo similar a esto (he eliminado el botón del submit para evitar confusión ya que no lleva a ninguna parte!):

1
2
3
4

Una vez tenemos esto procedemos a recoger los checkbox que el usuario ha seleccionado. Para esto debemos crear el fichero recoger_checkbox.php mencionado en la acción del formulario y obtener los datos de la siguiente forma:

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $numero=$_POST["numero"];
    $count = count($numero);
    for ($i = 0; $i < $count; $i++) {
        echo $numero[$i];
    }
}
Comentando de manera rápida lo que hace el código:
Línea 1: Si la petición es POST continuará el proceso.
Línea 2: Guardamos la cadena obtenida por POST en la variable $numero (podriamos trabajar directamente con $_POST["numero"]).
Línea 3: Guardamos el número de parámetros que contiene la cadena.
Línea 4: Recorremos la cadena utilizando el for.
Línea 5: Mostramos por pantalla el contenido de la posicion de la cadena.

Con eso conseguiremos mostrar los valores seleccionados en el checkbox, a partir de aquí podremos hacer con ellos lo que nos plazca; como introducir-los en la base de datos o realizar operaciones con ellos.

Un abrazo!!!

29 comentarios:

  1. Hola Ferran,

    Llevo muchos días peleando con unos checkboxs y creo que tu post me puede ayudar, sólo tengo una duda: Yo los creo desde una consulta a la BD, y los escribo así:
    -input type="checkbox" id="actp" name="actp" value="'.$row['actp_id'].'">-span class="forms">'.$row['actp_desc'].'-/span>
    ';
    };

    Podría adaptarlo? Si me pudieras hechar una mano te lo agradecería mucho. lauravergoos@gmail.com

    Merci!

    ResponderEliminar
    Respuestas
    1. Hola estoy buscando hacer lo mismo que tu implementas podrias ayudarme?? te lo agradeceria mucho :) 0228jamb@gmail.com

      Eliminar
    2. Hola, tengo algo parecido en mi programa, tomo los datos de una tabla diferente a donde lo guardare en la base de datos, este es mi código del checkbox:

      input type='checkbox' name='objetos' value='$id'

      El valor de la variable id es tomada de una tabla de la base de datos.
      Si pudieran ayudarme se los agradecería mucho, este es mi correo iecv19@gmail.com

      Saludos!

      Eliminar
  2. Buenísimo!!!!
    Me sirvió un montón... Aunque me pasó algo bien curioso y no sé por qué...
    Tomando los datos de tu ejemplo..
    Si Yo selecciono el 2... me pasa en el arreglo 2,3,4... (Al imprimir sale eso), siendo que sólo seleccioné el 2... por qué puede pasar eso??

    Saludos!

    ResponderEliminar
  3. amigo y si tengo una paginacion me podrias ayudar como lo podria hacer?

    ResponderEliminar
  4. amigo, con las checkbox recabados quiero realizar una consulta con mysql, pero solo puedo consultar seleccionando un solo checkbox si selecciono mas no muestra nada .-. espero me pudieras ayudar

    ResponderEliminar
  5. Elijo pais en un select y me carga ciudades correspondientes. Lo logre. Pero sabes si puedo hacer lo mismo pero cuando elija pais qm cargue ciudades en checkbox?

    ResponderEliminar
  6. Para el caso de consultas en el value envia el array que genera la consulta:
    < input type="checkbox" name="numero[]" value="" />

    ResponderEliminar
  7. HGola! Todo me funciona perfecto! Como podria hacer para mandarlos a mi mail despues del echo? Cree un formulario que se ve perfecto y todo pero no se como enviarlos a un mail. Muchas gracias por el tuto, excelentisimo!!

    ResponderEliminar
  8. Buen día!
    Muchas gracias por compartir sus conocimeintos, me fue de gran ayuda.
    Saludos!!!

    ResponderEliminar
  9. gracias! me sirvió de mucho tu aporte

    ResponderEliminar
  10. Excelente, simple y funcional, gracias, mil.

    ResponderEliminar
  11. que tal me excelente aporte, me podrias decir como queda la base de datos, estoy iniciando en esto y quiero aprender con un ejemplo y el tuyo esta excelente para el proyecto mi pagina que estoy iniciando. Saludos y muchas gracias

    ResponderEliminar
  12. Hola amigos, ¿se podría realizar la misma operación seleccionando una fila completa de una tabla para cada checkbox, así como seleccionar varios check de este tipo y enviarlos con un solo botón?

    ResponderEliminar
  13. Gracias! era justo lo que necesitaba

    ResponderEliminar
  14. Buen artículo y funciona. Pero lo que no llegó a funcionarme es la parte de insertar los datos a la BD, como se hace?
    Respondeme a paidoaragon.2@gmail.com gracias!

    ResponderEliminar
  15. Buen artículo y funciona. Pero lo que no llegó a funcionarme es la parte de insertar los datos a la BD, como se hace?
    Respondeme a paidoaragon.2@gmail.com gracias!

    ResponderEliminar
  16. Genial, muchas gracias por tu ayuda.

    ResponderEliminar
  17. amigo y si tengo una paginacion me podrias ayudar como lo podria hacer?
    por favor gracias

    ResponderEliminar
  18. Excelente explicación, me ayudo mucho para entender

    ResponderEliminar