2010-02-21 20 views
49

¿Es posible hacer que una matriz sea una variable de sesión en PHP. La situación es que tengo una tabla (página 1) con algunas celdas que tienen un enlace a una página en particular. La siguiente página tendrá una lista de nombres (página 2, que quiero conservar en una matriz de sesión) con sus respectivas casillas de verificación. Al enviar este formulario, se abrirá una página de transacción (página 3, donde los valores de las casillas marcadas se guardan en una base de datos para los nombres correspondientes). Ahora, si regreso a la primera página y hago clic en otra celda, ¿la matriz de sesión contendrá la nueva lista de nombres o los antiguos?Matriz como variable de sesión

Respuesta

51

Sí, PHP soporta matrices como variables de sesión. Ver this page para un ejemplo.

En cuanto a su segunda pregunta: una vez que establezca la variable de sesión, seguirá siendo la misma hasta que la cambie unset. Entonces, si la tercera página no cambia la variable de la sesión, permanecerá igual hasta que la segunda página la cambie nuevamente.

+0

¿Puedes aclarar mi duda sobre la última parte de la pregunta? –

+1

Si vuelve a la primera página y hace clic en la segunda página (donde los datos se colocan en una sesión), los datos de la sesión contendrán un nuevo conjunto de datos. –

+0

Gracias lo tengo .. :) –

66

Sí, puede poner las matrices en las sesiones, ejemplo:

$_SESSION['name_here'] = $your_array; 

Ahora puede utilizar el $_SESSION['name_here'] en cualquier página que desee, pero asegúrese de que usted pone la línea session_start() antes de usar cualquiera de las funciones de la sesión, por lo que código debe ser algo como esto:

session_start(); 
$_SESSION['name_here'] = $your_array; 

posible ejemplo:

session_start(); 
$_SESSION['name_here'] = $_POST; 

Ahora puede obtener valores de campo en cualquier página de la siguiente manera:

echo $_SESSION['name_here']['field_name']; 

En cuanto a la segunda parte de su pregunta, las variables de sesión permanecen allí a menos que asigne diferentes datos de la matriz:

$_SESSION['name_here'] = $your_array; 

La duración de la sesión se establece en php.ini file.

More Info Here

+0

¿qué pasa con la otra parte de mi pregunta ...? –

+0

@Anurag: He actualizado mi pregunta para su segunda parte de la pregunta. Gracias :) – Sarfraz

+0

Muchas gracias ... –

1

Primero cambie la matriz a una cadena utilizando la función implode(). E.g $number=array(1,2,3,4,5,...); $stringofnumber=implode("|",$number); luego pase la cadena a una sesión. Por ejemplo, $_SESSION['string']=$stringofnumber; así que cuando vayas a la página donde quieres usar la matriz, solo explota la cadena. Por ejemplo, $number=explode("|", $_SESSION['string']);, finalmente el número es su matriz, pero recuerde iniciar la matriz en cada página.

0
session_start();   //php part 
$_SESSION['student']=array(); 
$student_name=$_POST['student_name']; //student_name form field name 
$student_city=$_POST['city_id']; //city_id form field name 
array_push($_SESSION['student'],$student_name,$student_city); 
//print_r($_SESSION['student']); 


<table class="table">  //html part 
    <tr> 
     <th>Name</th> 
     <th>City</th> 
    </tr> 

    <tr> 
    <?php for($i = 0 ; $i < count($_SESSION['student']) ; $i++) { 
    echo '<td>'.$_SESSION['student'][$i].'</td>'; 
    } ?> 
    </tr> 
</table> 
Cuestiones relacionadas