Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesja, tablica itd.
Forum PHP.pl > Forum > PHP
MarShalL89
Witam, dość dużo szperałem w internecie i nie widziałem takiej informacji.
Chodzi o to, że wiem, że można zapisać tablice do sesji, ale czy zapisaną tablicę w sesji można z powrotem zapisać jako tablica tak, aby odwołać się do poszczególnego elementu tablicy? Jeśli nie można to jak odwołać się do elementów sesji? - tak, aby każdy element był wyświetlany np w oddzielnej linii i żeby pojedynczy element można było usunąć?
mar1aczi
serialize
Przed zapisem wykonujesz metodę serialize na tablicy i zapisujesz, po odczycie wykonujesz unserialize na tablicy i ja modyfikujesz.
Crozin
Wbudowany w PHP mechanizm sesji sam zajmuje się serializacją wrzuconych do niego danych, nie ma potrzeby ręcznego korzystania z serialize. Na dobrą sprawę nie musisz niczego robić z danymi, które są wrzucane do sesji - jedynie, w przypadku obiektów powinno implementować się interfejs Serializable.
mar1aczi
Przy okazji: co szybsze - owa serializacja, deserializacja czy json_encode/json_decode?
Crozin
Serializacja, ale jak już wspomniałem: nie powinieneś ręcznie serializować danych trafiających do sesji.
MarShalL89
Rozumiem zasadę - chyba rozumiem, ale powiedzmy, ze mam taki kod:
  1. $ItemID = htmlspecialchars($_POST['ItemID']);
  2.  
  3. if(!isset($_SESSION['produkty'])) { // sprawdzasz czy jest już w sesji koszyk, jeśli nie tworzysz pusty
  4. $produkty = array(serialize(''));
  5. $_SESSION['produkty'] = $produkty;
  6. }
  7. if(!empty($ItemID)){
  8. $_SESSION['produkty'][] = $ItemID; // dorzucasz do id produktu do tablicy
  9. }


to efekt wygląda tak:
Array ( [0] => s:0:""; [1] => 1 [2] => 1 [3] => 2 ) Array

Czy to właśnie w taki sposób powinno wyglądać? Czy ja przed każdym dodaniem nowego elementu do tablicy musze użyć unserialize?
CuteOne
  1. $ItemID = htmlspecialchars($_POST['ItemID']);
  2.  
  3. if(!isset($_SESSION['produkty'])) { // sprawdzasz czy jest już w sesji koszyk, jeśli nie tworzysz pusty
  4. $_SESSION['produkty'] = array();
  5. }
  6. if(!empty($ItemID)){
  7. $_SESSION['produkty'][] = $ItemID; // dorzucasz do id produktu do tablicy
  8. }
Crozin
  1. if(!isset($_SESSION['produkty']) {
  2. $_SESSION['produkty'] = array();
  3. }
  4.  
  5. if (!empty($itemId)) {
  6. $_SESSION['prodkty'][] = $itemId;
  7. }
Nic, z żadną serializacją nie powinieneś robić.
MarShalL89
Wybaczcie, ale chyba jestem za głupi już na to wszystko, ale w takim razie jak mogę usunąć pojedynczy element z sesji ?
Crozin
  1. unset($_SESSION['klucz'])
?
MarShalL89
Okej, zrozumiałem - dziękuję czyli
  1. unset($_SESSION['produkty']['6']);

Usuwa z sesji produkty element o kluczu 6 smile.gif

Jeszcze raz dziękuję za wyjasnienie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.