texto son los formularios formulario estructura elementos ejemplos ejemplo cuales cajas php post

php - son - formulario html



POSTING campos de formulario con el mismo atributo de nombre (4)

Si tiene un formulario que contiene entradas de texto con atributos de name duplicados, y el formulario está publicado, ¿podrá obtener los valores de todos los campos del conjunto $_POST en PHP?


En lugar de name="nfo[val]" simplemente use name="nfo[val][]" y en PHP puede usar un foreach()

Código HTML:

<form method="post"> <input name="nfo[val][]" value="val1"/> <input name="nfo[val][]" value="val2"/> <input name="nfo[val][]" value="val3"/> <input type="submit" /> </form>

Código PHP:

$output=''''; foreach ($nfo[''val''] as $key=>$val) { $output.= $val.", "; }

$output será: val1, val2, val3

¡Espero que esto ayude!


No. Solo el último elemento de entrada estará disponible.

Si desea varias entradas con el mismo nombre, use name="foo[]" para el atributo de nombre de entrada. $_POST contendrá una matriz para foo con todos los valores de los elementos de entrada.

<form method="post"> <input name="a[]" value="foo"/> <input name="a[]" value="bar"/> <input name="a[]" value="baz"/> <input type="submit" /> </form>

Vea la referencia HTML en Sitepoint .

La razón por la cual $_POST solo contendrá el último valor si no usas [] es porque PHP simplemente explotará y se enfocará en la cadena de consulta sin procesar para completar $_POST . Cuando encuentra un par nombre / valor que ya existe, sobrescribirá el anterior.

Sin embargo, aún puede acceder a la cadena de consulta sin procesar de esta manera:

$rawQueryString = file_get_contents(''php://input''))

Suponiendo que tienes un formulario como este:

<form method="post"> <input type="hidden" name="a" value="foo"/> <input type="hidden" name="a" value="bar"/> <input type="hidden" name="a" value="baz"/> <input type="submit" /> </form>

el $ rawQueryString contendrá a=foo&a=bar&a=baz .

Luego puede usar su propia lógica para analizar esto en una matriz. Un enfoque ingenuo sería

$post = array(); foreach (explode(''&'', file_get_contents(''php://input'')) as $keyValuePair) { list($key, $value) = explode(''='', $keyValuePair); $post[$key][] = $value; }

que luego le daría una matriz de matrices para cada nombre en la cadena de consulta.


Solo si el nombre son names[] matriz de tipo names[] en ese caso obtendrá una matriz como la variable en la variable $ _POST.


Tienes que crear una matriz de ellos: con name=inputname[] y obtener con post, request u get

$inputs = $_POST[''inputname'']; print_r($inputs);