Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sesja, tablica itd.
MarShalL89
post 21.05.2013, 12:35:00
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.05.2013

Ostrzeżenie: (0%)
-----


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ąć?
Go to the top of the page
+Quote Post
mar1aczi
post 21.05.2013, 12:49:39
Post #2





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


serialize
Przed zapisem wykonujesz metodę serialize na tablicy i zapisujesz, po odczycie wykonujesz unserialize na tablicy i ja modyfikujesz.


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
Crozin
post 21.05.2013, 12:54:07
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mar1aczi
post 21.05.2013, 12:56:12
Post #4





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Przy okazji: co szybsze - owa serializacja, deserializacja czy json_encode/json_decode?


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
Crozin
post 21.05.2013, 13:09:28
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Serializacja, ale jak już wspomniałem: nie powinieneś ręcznie serializować danych trafiających do sesji.
Go to the top of the page
+Quote Post
MarShalL89
post 21.05.2013, 13:38:36
Post #6





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.05.2013

Ostrzeżenie: (0%)
-----


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?

Ten post edytował MarShalL89 21.05.2013, 13:39:33
Go to the top of the page
+Quote Post
CuteOne
post 21.05.2013, 13:45:55
Post #7





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


  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. }
Go to the top of the page
+Quote Post
mar1aczi
post 21.05.2013, 13:46:02
Post #8





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


http://www.plus2net.com/php_tutorial/array-session.php


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
Crozin
post 21.05.2013, 13:47:25
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


  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ć.
Go to the top of the page
+Quote Post
MarShalL89
post 21.05.2013, 14:08:54
Post #10





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.05.2013

Ostrzeżenie: (0%)
-----


Wybaczcie, ale chyba jestem za głupi już na to wszystko, ale w takim razie jak mogę usunąć pojedynczy element z sesji ?
Go to the top of the page
+Quote Post
Crozin
post 21.05.2013, 14:26:40
Post #11





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


  1. unset($_SESSION['klucz'])
?
Go to the top of the page
+Quote Post
MarShalL89
post 22.05.2013, 11:39:19
Post #12





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.05.2013

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 18:37