Tengo un formulario que es un poco complejo y espero simplificar el procesamiento del lado del servidor (PHP) publicando de forma nativa una matriz de tuplas.
La primera parte del formulario representa a un usuario :
- Nombre de pila
- Apellido
- Correo electrónico
- Habla a
- etc
La segunda parte del formulario representa un árbol :
- Fruta
- Altura
- etc
El problema es que necesito poder PUBLICAR varios árboles para un solo usuario en el mismo formulario. Me gustaría enviar la información como un solo usuario con una matriz de árboles, pero esto puede ser demasiado complejo para hacerlo con un formulario. Lo único que me viene a la mente es usar javascript para crear algún 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 los scripts desactivados).
Respuestas:
mira este.
<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]">
debería terminar así en la matriz $ _POST [] (formato PHP para una fácil visualización)
$_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' ) ) )
fuente
tree[tree 1][fr ui_t]
tree[tree.1][fru:it]
tree[tree@1][fru,it]
¿_ es solo un delimitador seguro en la denominación de claves?tree[][fruit]
ytree[][height]
no válido indexar automáticamente la matriz?new formData($("form")[0])
y jQuery$("form").serializeArray()
regresanname="tree[tree1][fruit]"
como cadena ... ayuda.serialize()
o.serializeArray()
También puede publicar varias entradas con el mismo nombre y guardarlas en una matriz agregando corchetes vacíos al nombre de la entrada de esta manera:
<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 usa php:
print_r($_POST['comment'])
obtendrás esto:
Array ( [0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4' )
fuente