Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> un/serialize
jureusz
post 27.04.2004, 19:15:23
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 16.03.2004

Ostrzeżenie: (10%)
X----


Cytat
<?php  
session_start();  

// tworzymy nowy obiekt koszyka, ale sprawdzamy czy nie ma go już czasem w zmiennej
sesyjnej  
$zamow = (isset($_SESSION['zamow'])) ? unserialize($_SESSION['zamow']) : new Koszyk();  

// załóżmy że w sesji go nie było więc wykonywane jest new Koszyk();  

// przeprowadzamy jakieś operacje na obiekcie, np.  
$zamow->dodaj("Ram 128", 90, 1);  

// jeśli wykonaliśmy wszystkie operacje to możemy wrzucić obiekt $zamow z powrotem
do sesji:  
$_SESSION['zamow'] = serialize($zamow);
?>


Wykorzystalem to rozwiazanie w tworzeniu obiektu koszyka ale mam problem. Lokalnie wedlug tego schematu dziala wszystko idealnie (php 4.3.4, IIS). Po uploadzie na serwer:

Cytat
Fatal error: Call to a member function dodaj() on a non-object in *.php on line 177

- przy wywolaniu metody dodaj. Do innych metod nie dochodze bo obiektu juz nie ma w sesji.

Wiem ze blad tkwi w serialize ... tyle ze nie umiem sobie z nim poradzic.
Go to the top of the page
+Quote Post
Bakus
post 27.04.2004, 19:48:32
Post #2


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

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


heh... a gdzie jest zdefiniowana klasa Koszyk questionmark.gif
Z tego co widzę jej tu nie ma... to jest podstawowy błąd tego kodu jaki pokazałeś...


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
jureusz
post 27.04.2004, 20:01:57
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 16.03.2004

Ostrzeżenie: (10%)
X----


[php:1:983e44c046]<?php
class Koszyk {

var $zawartosc;

function dodaj($id, $ilosc) {
if(empty($this->zawartosc)) {
$this->zawartosc[$id] = $ilosc;
}
else {
if (array_key_exists($id, $this->zawartosc)) {
$this->zawartosc[$id] += $ilosc;
}
else {
$this->zawartosc[$id] = $ilosc;
}
}
}

function usun($id){
if (array_key_exists($id, $this->zawartosc)) {
unset($this->zawartosc[$id]);
}
}

function zmien($id,$ilosc){
// if (array_key_exists($id, $this->zawartosc)) {
$this->zawartosc[$id]=$ilosc;
// }
}
}
?>[/php:1:983e44c046]

klase mam zdefiniowana dobrze .. no jezeli ktos ma jakies sugestie to oczywiscie prosze sie nie krepowac ... ale nie w tym lezy istota mojego problemu
Go to the top of the page
+Quote Post
Seth
post 27.04.2004, 20:13:26
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Nie chodzi o to. Aby zdeserializowac ten element musisz wczesniej zaincludowac klase, ktora ma byc zdeserializowana.
Go to the top of the page
+Quote Post
Bakus
post 27.04.2004, 20:15:07
Post #5


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

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


nie o to chodziło...
W pliku jakiego treść podałeś na samym początku nie ma nigdzie dołączonego pliku z w/w kalsą... dla tego też może pokazywać błędy...


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
jureusz
post 27.04.2004, 20:23:55
Post #6





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 16.03.2004

Ostrzeżenie: (10%)
X----


hmm moze sie zle wyrazilem...
Klasa jest zaincludowana i wszystko dziala idealnie na lokalnym serwerze. Piszac ze wszystko dziala idealnie mam na mysli powolywanie obiektu do zycia i wywolywanie metod w miejscu gdzie jest ternariusz. Niestety na serwerze sytuacje ma sie nieco inaczej. Mozliwe jest dodanie tylko jednego artykulu do koszyka (powolanie obiektu do zycia wywolanie metody dodaj()). W momencie kiedy wywolywana jest po raz drugi metoda dodaj() wystepuje blad ... ktory podalem wyzej.
Go to the top of the page
+Quote Post
BzikOS
post 27.04.2004, 22:17:27
Post #7





Grupa: Przyjaciele php.pl
Postów: 660
Pomógł: 0
Dołączył: 28.08.2002
Skąd: Starachowice

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


Ooo poznaję swój kod winksmiley.jpg

Może na serverze, na którym to nie działa jest tak stare php, że nie obsługuje tablic $_SESSION?
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: 13.08.2025 - 22:18