[PHP] koszyk

0

Witam, mam problem z realizacja czegoś na kształt koszyka w sklepie internetowym. Informacja o zawartości ma być w załozeniu przechowywana z cookies.

<?php  

if (isset($_COOKIE['Basket'])) {
  $value = unserialize($_COOKIE['Basket']);
 $value[]=$_POST['kosz'];
  
setcookie("Basket", serialize($value), time()+3600);
header('location: basket.php');
  
  
} else {
        $value = Array();
		$value[]=$_POST['kosz'];
		setcookie("Basket", serialize($value), time()+3600);
		header('location: basket.php');
       }



?>

Kolejne wartości są przekazywane z innego pliku za pośrednictwem $_POST['kosz'], jednak powyższy kod nie działa prawidłowo, zamiast stworzyć tablicę powiela tylko zmienną.

0

skorzystaj z sesji - prościej i mniej niespodzianek

0

Sesje nie są w tym przypadku dobrym pomysłem, użytkownik dodając produkty do koszyka powinien miec mozliwosc powrotu do tego koszyka np po tygodniu.
Alternatywą jest baza danych, ale przypisywanie kazdemu uzytkownikowi osobnej tabeli może znacznie spowolnic działanie skryptu.

0
Orzechowski napisał(a)

Alternatywą jest baza danych, ale

przypisywanie kazdemu uzytkownikowi osobnej tabeli

może znacznie spowolnic działanie skryptu.

Kto was takich idiotyzmów uczy?, gdzieś to chłopie wyczytał? Daj namiar zaraz spalimy tą książkę/zablokujemy stronę...

0

Sam się uczę, powiedz mi w takim razie jak ianczej to zrealizowac?

P.S. Co jest nie tak z moim kodem?

0

najprościej na czterech tabelach

towary
*towar_id
rozne_inne
kontrahenci
*kontrahent_id
rozne_inne
koszyki
*koszyk_id
#kontrahent_id
rozne_inne
pozycje_w_koszyku
*pozycja_id
#koszyk_id
#towar_id
rozne_inne
* - klucz główny
# - klucz obcy

To jest najprostszy schemat i daje Ci to, że możesz mieć wielu kontrahentów, każdy może mieć wiele koszyków i w każdym koszyku możesz mieć wiele towarów. W zależności jak sobie to zorganizujesz (np. indeksy unikalne) możesz mieć tak, że ten sam kontrahent nie może mieć jednego towaru w kilku koszykach. Możliwości generalnie jest dużo. Co do szybkości to przy odpowiednich indeksach praktycznie nie odczujesz różnicy przy 100 i 100000 rekordów.

Co do tego co jest nie tak z Twoim kodem to ja nic takiego nie pisałem, jednak trzymanie takich danych w ciastkach to trochę nie teges bo
a) user może usunąć ciastka
b) user może odpalić Twój sklep na innej przeglądarce (na tym samym kompie!) i już kicha bo nie ma koszyka
c) user może odpalić Twój sklep na całkiem innym kompie i kicha bo nie ma koszyka
d) user może odpalić Twój sklep na całkiem innym kompie i kicha bo ma nie swój koszyk (jeśli ktoś inny też wchodził na ten sklep)
Generalnie ciastka/sesje są dobre do trzymania danych tymczasowych dopóki user nie zechce ich zapisać lub porzucić. Tutaj jedynym rozsądnym wyjściem jest BD

0

Dzieki, to jest to o co mi chodzilo, baza juz istnieje lekka modyfikacja i powinno śmigać :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1