![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 16.03.2004 Ostrzeżenie: (10%) ![]() ![]() |
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. |
|
|
![]()
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
![]() Z tego co widzę jej tu nie ma... to jest podstawowy błąd tego kodu jaki pokazałeś... -------------------- Powrót do przeszłości :)
![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 16.03.2004 Ostrzeżenie: (10%) ![]() ![]() |
[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 |
|
|
![]()
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.
|
|
|
![]()
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 :)
![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 16.03.2004 Ostrzeżenie: (10%) ![]() ![]() |
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. |
|
|
![]()
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
![]() Może na serverze, na którym to nie działa jest tak stare php, że nie obsługuje tablic $_SESSION? |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.08.2025 - 22:18 |