2010-02-21 22 views
49

E 'possibile creare una matrice in una variabile di sessione in PHP. La situazione è che ho una tabella (pagina 1) con alcune celle che hanno un collegamento ad una pagina particolare. La pagina successiva avrà un elenco di nomi (pagina 2, che voglio mantenere in un array di sessione) con le rispettive caselle di controllo. All'invio di questo modulo, questo porterà a una pagina di transazione (pagina 3, dove i valori delle caselle di controllo pubblicate sono conservati in un database per i nomi corrispondenti). Ora, se torno alla prima pagina e clicco su un'altra cella, l'array di sessione contiene il nuovo elenco di nomi o quelli vecchi?Matrice come variabile di sessione

risposta

51

Sì, PHP supporta array come variabili di sessione. Vedere this page per un esempio.

Per quanto riguarda la seconda domanda: una volta impostata la variabile di sessione, rimarrà la stessa finché non la cambierai o unset. Quindi se la terza pagina non cambia la variabile di sessione, rimarrà la stessa finché la seconda pagina non la cambierà di nuovo.

+0

puoi chiarire il mio dubbio sulla parte successiva della domanda ..? –

+1

Se si torna alla prima pagina e si fa clic sulla seconda pagina (dove i dati vengono inseriti in una sessione) i dati della sessione conterranno un nuovo set di dati. –

+0

Grazie, ho capito .. :) –

66

Sì, si può mettere gli array in sessioni, ad esempio:

$_SESSION['name_here'] = $your_array; 

Ora è possibile utilizzare il $_SESSION['name_here'] su ogni pagina che si desidera, ma fare in modo che si mette la linea session_start() prima di utilizzare qualsiasi funzione di sessione, in modo da codice dovrebbe essere simile a questa:

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

possibile esempio:

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

Ora è possibile ottenere valori di campo su una pagina come questa:

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

quanto riguarda la seconda parte della sua domanda, le variabili di sessione rimangono lì a meno che non si assegna diversi dati matrice:

$_SESSION['name_here'] = $your_array; 

La durata della sessione è impostata nel file php.ini.

More Info Here

+0

E l'altra parte della mia domanda ..? –

+0

@Anurag: ho aggiornato la mia domanda per la seconda parte della domanda. Grazie :) – Sarfraz

+0

Grazie mille ... –

1

Prima modificare l'array in una stringa utilizzando la funzione implode(). E.g $number=array(1,2,3,4,5,...); $stringofnumber=implode("|",$number); quindi passare la stringa a una sessione. ad esempio $_SESSION['string']=$stringofnumber; così quando vai alla pagina in cui desideri utilizzare l'array, fai esplodere la stringa. ad esempio $number=explode("|", $_SESSION['string']); infine il numero è il tuo array ma ricorda di avviare l'array su ogni pagina.

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> 
Problemi correlati