Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]serializacja problem
Forum PHP.pl > Forum > Przedszkole
collecter
Witam,
mam problem z serializacja, ktorej chcialbym uzyc do przechowywania obiektu i zupelnie nie moge sobie z tym poradzic, a moze nie do konca poprawnie rozumiem jej koncepcje. Problem postaram sie przedstawic mozliwie najbardziej zrozumiale:

Mam strone na ktorej pobieram elementy z 'zewnetrznego' magazynu i przechowywuje je w tabeli (dokladniej obiekcie, ktorego jednym z elementow jest tabela). Obiekt w ktorym przechowywuje pobrane elementy posiada metode, ktora weryfikuje czy posiada on wystarczajaco elementow aby moc je wyswietlic na danej stronie, jesli nie to pobiera nastepne z 'zewnetrznego' magazynu. Ilosc kolejnych elementow wyswietlanych na stronie jest uzalezniona od offsetu. Np dla offsetu rownego 0 wyswietlam elementy z tabeli 0 -99; dla 1 -> 100 - 199 itd. I teraz moj problem polega na tym, ze kiedy chce wyswietlic offset 4 to pobieram kolejne elementy i je wyswietlam, a chcac wrocic do offsetu 1 nie robie nic oprocz wyswietlenia, poniewaz elementu juz sa w tablicy tego obiektu(a wiec nie musze ponownie inicjalizowac obiektu i pobieraz od nowa elementow dla wartosi offsetu 1). Do rozwiazania tego problemu zdecydowalem sie uzyc serializacji. I tak moj kod strony wyglada nastepujaco:

Kod
[php]require_once('magazyn.php');

$offset = $_GET['offset'];

if( isset( $_SESSION['magazyn'] ) ){
  
  $magazyn = unserialize($_SESSION['magazyn']);
  
} else {
  
  session_start();
  $magazyn=  new Magazine($number, $offset);
  
}

  if($magazyn->canDisplay($offset) == true){
     $magazyn->display();  
  } else {
     $magazyn->getElements();
     $magazyn->display();
  }


  $_SESSION['magazyn'] = serialize($magazyn);

  echo "| &nbsp <a href=pokaz.php?offset=5>offset5 </a> &nbsp ";

[/php]


I moj problem polega na tym ze po inicjalizacji, kiedy chce wejsc na ta sama strone z offsetem 5, caly czas tworzy obiekt od nowa(nie znajduje zmiennej sesyjnej $_SESSION['magazyn']). Gdzie lezy moj blad w rozumowaniu?

pozdrawiam i dziekuje z gory za pomoc
Nix1
Bo tej zmiennej nie ma, sprawdzasz $_SESSION['magazyn'] zanim sesja startuje.

Przenieś session_start() z szóstej linijki do około drugiej.
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.