2009-11-12 15 views
11

Quiero saber cómo puedo publicar una matriz multidimensional?publicación de matriz multidimensional desde el formulario

Básicamente quiero seleccionar un usuario y el usuario seleccionado tendrá el correo electrónico y el nombre para enviar a la publicación.

Así que al seleccionar 100 usuarios, tendrá el correo electrónico y el nombre. Quiero entrar en PHP como el siguiente

$_POST['users'] = array(
    array(name, email), 
    array(name2, email2), 
    array(name3, email3) 
); 

¿Alguna idea?

+0

relacionado: http://stackoverflow.com/questions/1548159/php-how-to-send-an-array-to-another-page/1548193#1548193 – cregox

Respuesta

30

puede asignar nombres a los elementos de formulario así:

<input name="users[1][name]" /> 
<input name="users[1][email]" /> 
<input name="users[2][name]" /> 
<input name="users[2][email]" /> 
... 

Usted consigue la idea ...

+2

¿qué pasa con los usuarios [] [nombre], doy tiene que establecer la identificación (1, 2 ..)? – Basit

+3

No. También puede ir con 'users []'. – Franz

+0

¿Qué pasa con una situación en la que el número de usuarios no está predefinido, digamos que un usuario hace clic en un botón + y se abre un nuevo conjunto de campos y realmente pueden elegir no agregar ningún usuario – Pila

2

Bueno, usted va a tener que hacer un poco de bucle en alguna parte. Si nombra cada elemento de formulario con un índice (como sugiere Franz), realiza el bucle en el lado de PHP.

Si desea utilizar Javascript para hacer el bucle, haga que su formulario onSubmit() cree una cadena JSON para pasar al PHP. Luego haga que el PHP recuperarlo, así:

json_decode($_POST['users'], true); 

El segundo argumento dice que para hacer arreglos en vez de objetos anónimos.

+0

esta es la manera fácil, gracias! – lovespring

7

Here de otra manera: serialize la matriz, publicar y unserialize (encriptación opcional).

Y aquí es un ejemplo que trabajó para mí:

"send.php ":

<input type="hidden" name="var_array" value="<?php echo base64_encode(serialize($var_array)); ?>"> 

" receive.php":

if (isset($_POST['var_array'])) $var_array = unserialize(base64_decode($_POST['var_array'])); 

Con que solo puede usar $var_array como si se hubiera compartido entre los dos archivos/sesiones. Por supuesto, debe haber un <form> en este send.php, pero también puede enviarlo en un <a> como una cadena de consulta.

Este método tiene una gran ventaja cuando se trabaja con matrices multidimensionales.

+0

Impresionante solución. Funciona de maravilla. Gracias. – denislexic

+0

@denislexic ¡Estoy muy contento de que alguien lo haya disfrutado! :) – cregox

+0

Y simplemente la mejor solución. Gracias :) – Zl3n

Cuestiones relacionadas