:::: MENU ::::

El titulo lo dice todo, pero una cosa tan sencilla, me ha echo perder un tiempo valioso.
En un formulario, pasar los campos por post/get es facil, pero si tenemos un listado de campos múltiples o tenemos un listado de checkbox, como los pasamos? Uno a uno? Que matada no?
Investigando, un poco encontré que el php detecta como array cualquier nombre terminado en corchetes ‘[ ]’.
Osea, que aplicando lo dicho, tendríamos que hacer lo siguiente en los checkboxes:

  1. <input type='checkbox' name="nombre_campo[]"  value=1>Campo1

  2. <input type='checkbox' name="nombre_campo[]"  value=2>Campo2

  3. <input type='checkbox' name="nombre_campo[]"  value=3>Campo3

  4. <input type='checkbox' name="nombre_campo[]"  value=4>Campo4

De igual manera en un listado de campos multiple selección

  1. <select multiple name="nombre_campo[]">
  2. <option value="1">campo1</option> 
  3. <option value="2">campo2</option>
  4. <option value="3">campo3</option>
  5. <option value="4">campo4</option>
  6. </select>

Para capturar los datos, des del php haremos como cualquier otro tipo de dato, en este caso, por post


  1. $campos = $_POST['campos'];

Y el resultado obtenido nos será un array con los campos seleccionados.


51 Comments

  • Ferchox |

    Excelente! gracias, lo que estaba buscando. Estoy empezando con php y trucos como estos ahorran bastante tiempo.

  • alfonso |

    Me has salvado amigo, me estaba complicando bastante, me funciono al 100%…
    GRACIAS!!!

  • David |

    Muchas gracias. Me ha sido de mucha utilidad. Qué pena no haber dado con ello un par de días antes…

  • Gerard |

    Bueno David, ahora ya lo podrás aplicar al futuro :D Un saludo!

  • Anonimo |

    Mi pregunta es que necesito pasarlo con Javascript a PHP pero no con un submit sino con la funcion de JS document.locatio.href=”mipag.php?checkboxphp=” + checkboxseleccionados
    En todos lados muestran el codigo con el input submit y no con la validacion de JS previa.

  • Garuz |

    Una preguntA

    Porque Ami solo me captura un valor

    lo puedo poner asi ? para q capture todos ?

    $campos = $_POST[‘campos[ ]’];

    quisiera que capture los valores selccionados, solo me captura 1 valor

  • Gerard |

    Buenas Garuz.
    Usas el mismo ‘name’ para todos los inputs que quieres recoger en array?

  • Yrinna |

    Buscando encontré esta ayuda que me sirvió mucho!!!. Gracias. Ahora si obtengo los datos del checkbox. …esta es la clave del artículo: Investigando, un poco encontré que el php detecta como array cualquier nombre terminado en corchetes ‘[ ]’….gracias


  • Gerard |

    Correcto Yrinna. El php nos permite pasar valores de formulario en formato array. Un saludo! :D

  • Jerry |

    yo no le puse nombre al checkbox sino como id=”casilla[]” y no funcionó, me toco con el atributo name=”casilla[]”. Dicen que el atributo name no se debe usar, pero no hay de otra funciona!!!!

    Gracias (:

  • Bernardo |

    Me ha sido de gran ayuda. Llevaba probando todo el día hasta que he encontrado tu solución. Una sugerencia: creo que sería bueno que cambiaras en el primer ejemplo ‘valor[]’ por ‘campos[]’ para que no haya dudas. Gracias nuevamente.

  • Gabriel |

    Que solucion tan simple y funciona perfecto. En la simpleza esta la belleza. Gracias por compartir.

  • José A. |

    Buenas Gerard,
    sin usar los corchetes sólo recoge un valor, el primero seleccionado, pero usando los corchetes como indicas en vez de aparecer los datos seleccionados aparece el texto “array”, tanto con select multiple como con chexkbox, sabes a que se debe?

    en la parte de html uso

    campo1 

    campo2

    campo3

    campo4


    en php uso
    @$prueba = addslashes($_POST[‘prueba’]);

    un saludo y gracias

  • José A. |

    vaya la parte de html no ha pillao las etiquetas, lo comento a ver si así sale

    <!– 

    campo1 

    campo2

    campo3

    campo4

    –>

  • José A. |

    vaya tampoco así, el select multiple que he usado es el mismo de tu ejemplo

  • Mariana |

    Tengo un select multiple, recojo los datos elegidos, los envío y despues los recogo para tratarlos. Hasta ahí todo bien.
    El asunto es que necesito volver a pasar los datos del select elegidos por un campo hidden, para pasarlos a otra pagina y ya no he logrado hacerlo. la variable me captura el valor array

    1
    2
    3

    for ($i=0;$i<count($sistema);$i++)
    { echo $sistema[$i];
    }

    /****HASTA AQUI FUNCINA PERFECTO ****/

    <input type=hidden name=sistema value="”>

    /***AQUI RECIBE LA PALABRA Array***/
    foreach($sistema as $sis => $val)
    { echo $val[$sis].”-“;}

    Gracias por su ayuda

  • Mariana |

    /****HASTA AQUI FUNCINA PERFECTO ****/

    <input type=hidden name=sistema value="”>

    /***AQUI RECIBE LA PALABRA Array***/
    foreach($sistema as $sis => $val)
    { echo $val[$sis].”-”;}

    Gracias por su ayuda

  • Mariana |

    Tengo un select multiple, recojo los datos elegidos, los envío y despues los recogo para tratarlos. Hasta ahí todo bien.
    El asunto es que necesito volver a pasar los datos del select elegidos por un campo hidden, para pasarlos a otra pagina y ya no he logrado hacerlo. la variable me captura el valor array

    <
    <1
    <2
    <3

    for ($i=0;$i<count($sistema);$i++)
    { echo $sistema[$i];
    }

    /****HASTA AQUI FUNCINA PERFECTO ****/

    /***AQUI RECIBE LA PALABRA Array***/
    foreach($sistema as $sis => $val)
    { echo $val[$sis].”-“;}

    Gracias por su ayuda

  • leon |

    como hago para enviar estas variables y difenciar el nombre coreespondiente al id materia?….
    ya que todas se llaman idmateria

    ¿Desea inscribir Primer año?

    Seleccione las Materias:

    Lengua

            
        
           

  • Florencia |

    Hola, te hago una pregunta. Yo quiero poner checkbox en diferentes html y que luego me envie los que la persona ha seleccionado. Los quiero poner en un catalogo y a medida que la persona lo va viendo vaya tildando los productos que quiere cotizar.
    Como se hace?
    GRACIAS!

  • Gerard |

    Hola buenas Florencia. Aqui ya necesitarias usar ajax para realizar esto o precargar los contenidos en la pagina. El tema está usar las id’s de los selects, para ir a buscar sus datos relacionados en la base de datos o en los contenidos precargados.

  • Gerard |

    Leo, el tema seria, identificarlo por el valor interior. Me explico. Si usas todas el nombre materia, para saber cual has seleccionado, tendrias que usar un valor distinto dentro del array. Ejemplo:

    name=”materia[lenguas]
    name=”materia[literatura]
    name=”materia[historia]

    De esta forma, cuando recibas el valor, recojeras algo similar a esto: materia[‘lenguas’]; (o el elegido, por supuesto)
    Un saludo!

  • arnaldo aguilar |

    en mi caso tengo 5 combos y un input text como haria para que ese ejemplo del array se aplique de igual manera ya que de los 5 combos quiero crear un solo dato o registro
    ejemplo
    combo1 = pr
    combo 2= 1
    combo 3= 2004
    combo4 = f
    combo5 = l
    resultado en el input text =pr12004fl-001

  • zonhax |

    te falto poner el parametro class tambien en el checkbox se usa para interactuar con JS.

  • Diego |

    Hola tengo rato intentando que los datos de mi formulario se envíen por correo electrónico, tengo mis checkboxes de la siguiente manera:

    Cáncer

    Obesidad

    Diabetes

    Y mi php es este:

    Pero cuando los datos llegan a mi correo lo único que recibo es:

    Antecedentes
    Enfermedades: Array

    En lugar de recibir las checkboxes que estaban marcadas ¿Que debo hacer para que mi código funcione?

  • Diego |

    Rayos no salio, la cosa es que use el código que utilizaste y el php funciona pero en lugar de recibir los valores de Cancer, Obesidad y Diabetes solo reconoce el Array

  • Gerard |

    Buenas Diego. Lo que me comentas es por que estan intentando mostrar el valor de un array. Prueba, enves de printar con un echo con un print_r la varible y veras que te muestra los datos bien. Aún así, lo mejor seria printar los datos con el formato $valor[‘nombre’].

  • Marcos Aguilar |

    Hola!

    Tengo una pequeña duda! El formulario tal y como lo haces me funciona perfectamente… pero estoy intentado hacer un buscador para wordpress y partiendo desde una taxonomía llamada mcat. El problema que tengo que cuando le pongo los corchetes o las letras [] para la creación de la array, en la url tambien se me ponen… i claro después no busca por la taxonomía ya que se llama mcat y no mcat[&#93. Me podrías ayudar? :S:S

    Gracias!

  • Marcos Aguilar |

    Perdon que vuelva a insistir.. lo que se me pone en la url es lo siguiente… &mcat%5B%5D

  • kevin |

    si alguno quisiera enviar los datos seleccionados de más de un checkbox, tendrá que usar un foreach. La manera en como la explican acá funciona si solo se selecciona un solo checkbox. Siento que deberías explicar eso Gerard.
    Saludos.

  • Marlies |

    buenas tardes quisiera que alguien me ayudara con un ejemplo que cuando yo marque un radio , se me muestren varios input de texto y cuando lo desmarque se escondan, estoy empezando a programar, he tratado pero no se me muestran,gracias

  • Samuel |

    como dijo @Garuz a mi tambien me recoje unicamente un valor del select multiple unaque le ponga el corchete, si selecciono varios no funciona, si selecciono solo 1 si me manda el valor, necesito mandar todos los valores como lo hago

  • alice |

    Hola Gerald, tengo una duda y espero me puedas ayudar:
    tengo que seleccionar varios items de una lista de checkbox, los cuales extraigo desde una tabla en base de datos, he logrado que me guade asi : (1,5,10,7,3) los cuales son los ids de los items, el detalle es que para leerlos cuando se revisen los datos no he podido hacerlo, espero me puedas orientar. Estoy usando mysql y php.
    Saludos!

  • jc |

    muy bien, Gracias
    oye y que pasa si tengo un form, y quiero obtener el valor de un select, pero sin POST, es decir en el mismo archivo.php, y sin usar el Submit

    
aguascalientes
    
baja california
    
baja ca..
    
yucatan

    – lo que deso es que según el estado, se llene otro combo con los municipios, los ligo con un id, pero en la condicion como obtengo el id del estado seleccionado, he buscado mucho y encuentro jquery, pero no me arrojan los campos.
    saludos

  • investir no tesouro direto pelo banco do brasil |

    É mais interessante para quem quer utilizar rendimento para complementar sua renda
    a arrebentar do instante da aplicação, pois faz pagamento de juros a cada semestre, diferentemente do Tesouro IPCA+ (NTN-B Principal). http://www.robsongbarros.xyz/

So, what do you think ?