Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Koszyk do sklepu internetowego
in5ane
post 2.05.2010, 21:45:49
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


Cześć, zastanawiam się nad fajnym rozwiązaniem wykonania koszyka do sklepu internetowego. Próbuję zrobić to na tablicach wielowymiarowych oraz na sesjach. Czy to dobry pomysł? Myślałem, by zrobić to np. tak:
  1. $koszyk = array("$_SESSION[id_u]" => array("id_produktu" => 1, "ilosc" => 2, "rodzaj" => 1));

Kod
Array
    (
    [2] => Array // tutaj mam ID użytkownika z bazy
        (
        [id_produktu] => 1 // tutaj mam ID produktu z bazy
        [ilosc] => 2 // tutaj mam ilość danego produktu
        [rodzaj] => 1 // tutaj mam rodzaj transakcji (sprzedaż nowej, używanej, kupno nowej, używanej)
        )
    )

Tylko teraz mam pytanie, jak to dodać do sesji oraz jak to później odczytywać. No i czy operacje na tym będą dość łatwe (mam na myśli późniejsze dodawanie do bazy).
Z góry dzięki za pomoc.


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
blooregard
post 2.05.2010, 21:55:41
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Przecież w sesji możesz zapisywac dowolne zmienne (proste i złożone), tak samo, jak w każdej innej zmiennej/tablicy. W czym konkretnie widzisz problem?


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
in5ane
post 2.05.2010, 21:58:32
Post #3





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


Zastanawiam się jeszcze nad tym czy pierwszą dana ma być ID usera, czy może numer L.p. produktu w koszyku. No bo powiedzmy w koszyku będzie 5 produktów, to musi być 5 sesji chyba, czy jak, możesz podać przykład utworzenia takiej zmiennej sesyjnej, dodanie do niej produktu oraz wyczytanie z nich produktu?


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
blooregard
post 2.05.2010, 22:07:14
Post #4


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Myślę, że dobrym rozwiązaniem jest zagnieżdżenie:
ID klienta -> ID produktu ->dane produktu, które muszą być trzymane w sesji, czyli:
  1. $_SESSION['basket']['customer_id'] = array(
  2. 'id_produktu_1' => array('cena' => 123 , 'nazwa' => towar1, ...(itd) ),
  3. 'id_produktu_2' => array('cena' => 213 , 'nazwa' => towar2, ...(itd) ),
  4.  
  5. }
  6.  

Dodanie produktu:
  1. $_SESSION['basket']['customer_id'][] = array('id_produktu' => array ('cena' => 543, 'nazwa' => 'towar3'));


Pobranie danych produktu (wyświetlenie zawartości koszyka):
  1. while (list($key , $item) = each($_SESSION['basket']['customer_id'] ) {
  2. //$item to array z cena i nazwa
  3. echo $item['nazwa'] . ' cena: ' . $item['cena'];
  4. }


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
in5ane
post 2.05.2010, 23:41:55
Post #5





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


OK, dzięki, pokombinuję z tym ;-)

A mam jeszcze jedno pytanie. W jaki sposób mam zrobić, aby skrypt wiedział, że ma być produkt1, produkt2 itd.? Skoro ktoś doda sobie np. monitor, później chodzi po stronie i dodaje np. głośniki, no to skąd skrypt ma wiedzieć, że monitor to produkt1, a głośniki to produkt2?

Aha i czy jest sens ustawienia w sesji ID użytkownika?


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
blooregard
post 2.05.2010, 23:44:08
Post #6


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




  1. ...
  2. 'id_produktu_1' => array('cena' => 123 , 'nazwa' => towar1, ...(itd) ),
  3. ...

Te identyfikatry to był przykład. Możesz sobie przecież dodać w tej tablicy ze szczegółami produktu co tylko chcesz: kategorię produktu, nazwę, symbol - no, co chcesz. A jako klucz w tej tablicy użyć ID produktu w bazie danych (tu przy?ładowo 3213):
  1. ...
  2. 3213 => array('category' => 'Monitory' , 'type' => 'LCD' , 'size' => '20\'\'', 'manufacturer' => 'Samsung' , 'model' =>'LCD20' , 'price' => 799.90),
  3. ...


Cytat
Aha i czy jest sens ustawienia w sesji ID użytkownika?

Jasne, że tak.
W momencie np. zamawiania czegoś to ID pozwoli Ci w prosty sposób utworzyć zapytanie do tabeli z zamówieniami, gdzie ID klienta to klucz obcy tworzący relację pomiędzy tabelą z zamówieniami a tabelą z danymi klientów.
Taka sama sytuacja wystąpi w momencie, gdy np. dodasz opcję zapamietywania stanu koszyka pomiędzy kolejnymi wizytami w sklepie. Wtedy do tabeli (przykładowo) 'zapamietane_koszyki' wstawiasz kolejne produkty jako rekordy, w których jedno z pól to ID klienta zapamiętane w sesji.

Po ponownym zalogowaniu się, wyciągasz z 'zapamietane_koszyki' te produkty, które należą do klienta o danym ID, tworzysz w sesji tablicę z poprzednich postów i ładnie wyświetlasz klientowi koszyk.
Powód edycji: [blooregard]:


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
in5ane
post 3.05.2010, 09:02:06
Post #7





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


Dziękuję za pomoc, ale jednak troszkę inaczej to zrobiłem ;-)


--------------------
> > > Tworzenie stron < < <
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: 6.07.2025 - 23:01