Skocz do zawartości
mystery

[php]sesje - Koszyk

Rekomendowane odpowiedzi

witam

 

robię projekt na zaliczenie z PHP. strona musi zawierać m.in. koszyk w oparciu o sesje. szukałem długo fajnego sposobu, aby jakoś ułatwić sobie i zrobić łatwo dodawanie wielu przedmiotów do stanu sesji. wykorzystanie tablicy dwuwymiarowej stanowiło wg mnie dobry pomysł. znalazłem na necie fajny skrypcik i przerobilem go na własne potrzeby. Jednak nie działa, dostaję błąd

Fatal error: [] operator not supported for strings in ...

rozpoczęcie sesji wygląda tak:

<?php session_start();	//otwieram sesję	if(!isset($_SESSION['koszyk']))	//jezeli sesja po raz pierwszy otwarta	{		$_SESSION['koszyk']=array();	//czyść koszyk	}	if(isset($_GET['item']))	{		//dodajemy gitarę do koszyka		$_SESSION['koszyk'][]=$_GET['item'];		//przekierowanie z uwzględnieniem nie działających ciasteczek		header('location: ' . $_SERVER['PHP_SELF'] . '?' . SID);				exit();	}?>

zostało to umieszczone dokładnie tam gdzie trzeba, czyli na samiuśkim początku pliku, przed deklaracją doctype i nie ma żadnego pustego znaku, czy innych dziwnych rzeczy przed tym.

$_SESSION['koszyk'][]=$_GET['item']; powoduje, że za każdym razem po kliknięciu na "dodaj do koszyka" doda mi nowy produkt, bo [] oznaczają, że wrzuca wartość w pierwsze wolne miejsce i tablica może sobie tak rosnąć w prawie nieskończonośc :P dla mnie rozwiązanie perfect, ale nie działa

php v. 5.2.5

mysql v. 5.0.51a

 

proszę o pomoc w rozwiązaniu tego problemu, bądź podsunięcie innego pomysłu :)

 

pozdrawiam

m

 

ps. tagi php nie działają? czy tylko ja nie potrafię z nich korzystać? sql i html działa, a php nie...

 

edit

obszedłem problem trochę na około. że też dopiero teraz na to wpadlem, ale lepiej późno niż wcale. pewne doświadczenie w programowaniu w C pomogło trochę. problem obszedłem trochę na około

 

teraz moja sesja wygląda tak i wszystko gra :)

<?php	session_start();	//otwieram sesję	if(!isset($_SESSION['koszyk']))	//jezeli sesja po raz pierwszy otwarta	{		$_SESSION['koszyk']=array();	//czyść koszyk	}	if(!isset($_SESSION['id']))	{		$_SESSION['id']=0; //nowa zmienna	}	if(isset($_GET['item']))	{		//dodajemy gitarę do koszyka		$_SESSION['koszyk'][$_SESSION['id']]=$_GET['item'];		$_SESSION['id']++; //inkrementujemy :D		//przekierowanie z uwzględnieniem nie działających ciasteczek		header('location: ' . $_SERVER['PHP_SELF'] . '?' . SID);				exit();	}?>
Edytowane przez mystery

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...