2012-01-31 26 views
53

Tengo un formulario que es un poco complejo y espero simplificar el procesamiento del lado del servidor (PHP) al enviar de forma nativa una matriz de tuplas.POST una matriz desde un formulario HTML sin javascript

La primera parte del formulario representa un usuario:

  • Nombre
  • Apellido
  • correo electrónico
  • Dirección
  • etc

La segunda parte de la forma representa ts un árbol:

  • fruta
  • Altura
  • etc

El problema es que necesito para poder publicar varios árboles para un solo usuario en el misma forma. Me gustaría enviar la información como un usuario solo con una matriz de Árboles pero esto puede ser demasiado complejo para hacer con un formulario. Lo único que se me ocurre es usar javascript para crear un mensaje JSON con un objeto User y una matriz de objetos Tree. Pero sería bueno evitar JavaScript para admitir más usuarios (algunas personas tienen scripts desactivados).

+0

no hay tal cosa como matrices de formulario http://roshanbh.com.np/2008/08/handling-array-html- form-elements-javascript-php.html – Joseph

+1

¿El orden de garantía del conjunto? Me gustaría tener una matriz de objetos Tree que tenga múltiples campos, así que esto significa que tengo que usar varias matrices para representar un árbol y las matrices deben ordenarse para que pueda averiguar qué árbol representan. – styfle

Respuesta

102

check this one out.

<input type="text" name="firstname"> 
<input type="text" name="lastname"> 
<input type="text" name="email"> 
<input type="text" name="address"> 

<input type="text" name="tree[tree1][fruit]"> 
<input type="text" name="tree[tree1][height]"> 

<input type="text" name="tree[tree2][fruit]"> 
<input type="text" name="tree[tree2][height]"> 

<input type="text" name="tree[tree3][fruit]"> 
<input type="text" name="tree[tree3][height]"> 

debe terminar así en el [] array (formato PHP para una fácil visualización) $ _POST

$_POST[] = array(
    'firstname'=>'value', 
    'lastname'=>'value', 
    'email'=>'value', 
    'address'=>'value', 
    'tree' => array(
     'tree1'=>array(
      'fruit'=>'value', 
      'height'=>'value' 
     ), 
     'tree2'=>array(
      'fruit'=>'value', 
      'height'=>'value' 
     ), 
     'tree3'=>array(
      'fruit'=>'value', 
      'height'=>'value' 
     ) 
    ) 
) 
+6

¿Qué caracteres están permitidos en la indexación de matriz? ¿Podemos usar,.: '@? Ejemplo: 'árbol [árbol 1] [fr ui_t]' 'árbol [árbol.1] [fru: it]' 'árbol [árbol @ 1] [fru, it]' ¿Es _ único delimitador seguro en el nombramiento de teclas? – CoR

+2

¿'tree [] [fruit]' y 'tree [] [height]' no serían válidos para indexar automáticamente la matriz? – Wobbles

5

También puede publicar varias entradas con el mismo nombre y haga que guarden en una matriz agregando corchetes vacíos al nombre de entrada como este:

<input type="text" name="comment[]" value="comment1"/> 
<input type="text" name="comment[]" value="comment2"/> 
<input type="text" name="comment[]" value="comment3"/> 
<input type="text" name="comment[]" value="comment4"/> 

Si utiliza php:

print_r($_POST['comment']) 

recibirá este:

Array ([0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4') 
Cuestiones relacionadas