2010-02-21 13 views
49

Czy można utworzyć tablicę jako zmienną sesji w PHP. Sytuacja jest taka, że ​​mam tabelę (strona 1) z niektórymi komórkami mającymi link do konkretnej strony. Następna strona będzie zawierała listę nazw (strona 2, które chcę zachować w tablicy sesji) z ich odpowiednimi polami wyboru. Po przesłaniu tego formularza doprowadzi to do strony transakcji (strona 3, gdzie wartości umieszczonych pól wyboru są przechowywane w bazie danych dla odpowiednich nazw). Teraz, jeśli powrócę na pierwszą stronę i kliknę inną komórkę, czy tablica sesji zawiera nową listę nazw lub starych?Tablica jako zmienna sesji

Odpowiedz

51

Tak, PHP obsługuje tablic jako zmiennych sesyjnych. Zobacz przykład this page.

Co do drugiego pytania: po ustawieniu zmiennej sesji pozostanie ona taka sama, dopóki jej nie zmienisz lub nie zostanie zmieniona na . Jeśli więc trzecia strona nie zmieni zmiennej sesji, pozostanie ona taka sama, dopóki druga strona nie zmieni jej ponownie.

+0

czy możesz wyjaśnić moje wątpliwości dotyczące późniejszej części pytania ...? –

+1

Po powrocie do pierwszej strony i przejściu do drugiej strony (gdzie dane zostaną umieszczone w sesji) dane sesji będą zawierały nowy zestaw danych. –

+0

Dzięki, mam to .. :) –

66

Tak, można umieścić tablice w sesjach, na przykład:

$_SESSION['name_here'] = $your_array; 

Teraz można użyć $_SESSION['name_here'] na każdej stronie, którą chcesz, ale upewnij się, że można umieścić linię session_start() przed użyciem jakichkolwiek funkcji sesji, więc Kod powinien wyglądać mniej więcej tak:

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

Możliwa Przykład:

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

Teraz można uzyskać wartości pól na każdej stronie tak:

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

Co do drugiej części pytania, zmienne sesyjne pozostają tam chyba inny dane tablicy przypisać:

$_SESSION['name_here'] = $your_array; 

Czas sesji jest ustawiony na plik php.ini.

More Info Here

+0

co z pozostałą częścią mojego pytania ..? –

+0

@Anurag: Zaktualizowałem moje pytanie do drugiej części pytania. Dzięki :) – Sarfraz

+0

Wielkie dzięki ... –

1

Najpierw zmień tablicę na łańcuch za pomocą funkcji implode(). E.g $number=array(1,2,3,4,5,...); $stringofnumber=implode("|",$number); następnie przekazać ciąg do sesji. np. $_SESSION['string']=$stringofnumber; , więc kiedy przejdziesz do strony, na której chcesz użyć tablicy, po prostu rozbij swój ciąg. np. $number=explode("|", $_SESSION['string']); Ostatnim numerem jest twoja tablica, ale pamiętaj, aby rozpocząć tablicę na każdej stronie.

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> 
Powiązane problemy