Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Koszyk - rozwiazanie
Forum PHP.pl > Forum > PHP
mokry
Okey, problem przedstawia sie nastepujaco. Skrypt do obslugi sklepu online.
Wszystko przemyslane, pozostaje problem koszyka.

Dane:

Baza danych:
Tabele: users, produkty, kategorie, zamowienia, pozycje, config, tmp

Tabela tmp:
Kod
| id | date | session_id | product_id | quantity |


Jest sesja, dodaje produkt do koszyka.
zamowienie produktu -> dodanie danych do tabeli tmp

kasowanie tmp (optymalizacja tabeli) -> delete from tmp where date < $wczoraj

BTW: cookies racej odpada, bo nie przepadam za nimi winksmiley.jpg

Czy takie zalozenie jest ok? jakies propozycje?

Sorki za forme, ale mam ludzi w domu, motuja piec CO i musze jakos podzielis czas miedzy nimi a praca.
Z gory dzieki za sugestie i uwagi,
Michal
REN
Moze zamiast ID nalezalo by stworzyc index dla kolumn session_id oraz product_id?
Oczywiscie zakladajac, ze dany produkt moze wystepowac tylko raz w danym koszyku.

Zawsze tez mozna przechowywac koszyk w sesji. Nie trzeba bedzie meczyc bazy danych a wraz z
wygasnieciem sesji zostanie usuniety rowniez koszyk.
mokry
Hm, myslalem jeszcze nad tym aby calkowicie usunac kolumne ID.
Jezeli chodzi o przechowywanie koszyka w sesji to niebardzo bym chcial tego, bo jak jeszcze pozniej analizowalem co chce osiagnac, to doszedlem do wniosku ze dodam jeszcze do tabeli kolumne 'user_id'
Jezeli osoba jest niezalogowana to user_id = 0, jesli natomiast jest zalogowana to oczywiscie user_id przyjmuje wartosc 'id' z tabeli 'users'.
Po wylogowaniu sie, od chwili utworzenia sesji, przez najblizsze 24h, jesli nie zlozy zamowienia, bedzie mial to w swoim koszyku.
REN
Kolumna ID staje sie zbedna wiec trzeba ja wywalic.

Co do zapamietywania koszyka to nie przewidziales wszystkiego smile.gif
Co wtedy kiedy ktos wrzuci do koszyka towary a potem zaloguje sie na swoje konto?
Ktory koszyk bedzie tym wazniejszym? ten staty czy ten nowy? a moze klient
przypadkowo wrzucil do koszyka jakas pierdole i przez to straci ten zapisany wczesniej
koszyk smile.gif

Takich kwiatkow jest wiecej smile.gif
mokry
Po zalogowaniu moze nastapic update kolumn z danym session_id()

Nie ukrywam ze zalezy mi na utrzymaniu koszyka w MySQL, bowiem zyczeniem mojego klienta jest ciagly podglad na rzeczy w koszyku(WTF?).
REN
nie zrozumiales mnie smile.gif przeczytaj jeszcze raz smile.gif

"ciagly podglad koszyka" - pewnie chodzi o to, zeby na kazdej stronie pokazywala sie zawartosc koszyka smile.gif
mokry
Cytat
Co wtedy kiedy ktos wrzuci do koszyka towary a potem zaloguje sie na swoje konto?
Ktory koszyk bedzie tym wazniejszym? ten staty czy ten nowy?

Po zalogowaniu sie, nastapi zapytanie MySQL UPDATE rekordow z session_id() == session_id w polach 'user_id' na wlasciwe user_id uzytkownika. po wylogowaniu sie, wyswietli sie komunikat ze koszyk dostepny bedzie po ponownym zalogowaniu sie, a wszelkie produkty, ktore doda jako gość zostana dopisane do istniejacego juz koszyka....

Jesli chodzi o podglad koszyka, to klient ma na mysl, ze loguje sie do panelu adm. i widzi koszyki tymczasowe z wymienionymi produktami z podzialem na userow/gosci.
REN
Laczenie w ten sposob koszykow to IMO malo eleganckie rozwiazanie. Wykonujesz dzialanie
ktorego klient moze sobie nie zyczyc. Nie wyobrazam sobie sytuacji kiedy ide do supermarketu
i przy kasie ktos bez pytania wrzuca mi do koszyka produkty ktore zostawilem przy poprzedniej
wizycie. Skoro je zostawilem to moze ich nie chcialem?

Chyba lepszym rozwiazaniem jest po zalogowaniu poinformowanie klienta, ze ma zapisany
koszyk i zeby zdecydowal co chce z nim zrobic (usunac, zastapic albo polaczyc z istniejacym).


Twoj zleceniodawca chce miec podglad na porzucone koszyki. Co ludzie wybieraja ale nie skladaja
zamowienia. To sa istotne informacje.
DjKermit
Cytat(mokry @ 19.11.2006, 13:44:35 ) *
Jezeli osoba jest niezalogowana to user_id = 0, jesli natomiast jest zalogowana to oczywiscie user_id przyjmuje wartosc 'id' z tabeli 'users'.

1. A co jeśli w tym samym czasie zakupy będzie robić kilka nie zalogowanych klientów, każdego id będzie 0?
Cytat(mokry @ 19.11.2006, 13:44:35 ) *
BTW: cookies racej odpada, bo nie przepadam za nimi

2. Teraz wchodzę do Twojego sklepu, nie luguję się i napycham koszyk, porzucam go i wracam za kilka godzin. Skąd wiesz że to ja i skąd wiesz który koszyk jest mój?
mokry
Ad1) Tak, kazda osoba niezalogowana przyjmuje user_id = 0. potem w panelu admina jest podzial na gosci i uzytkownikow.
Jesli pare osob robi zakupy, kazdy ma user_id = 0, a skad wiadomo ktore wpisy uaktualnic? Po koumnie session_id. Przecierz po zalogowaniu sie, nie zmienia sie session_id()

Ad2) Jesli nie byles zalogowany, to koszyk faktycznie przepada, ale jesli robiles zakupy, potem sie zalogowales lub od razu sie zalogowales i potem robiles zakupy (bez znaczenia), to potem dopiero po zalogowaniu masz dostepny koszyk, z tym, ze masz od razu po zalogowaniu sie podglad na koszyk z wzmianka, ze dane produkty byly wczesniej wybrane na identyfikatorze innej sesji.
REN
zawsze mozna zalozyc ciacho zeby rozpoznawac tez tych niezalogowanych
DjKermit
Cytat(mokry @ 19.11.2006, 17:42:27 ) *
Ad2) Jesli nie byles zalogowany, to koszyk faktycznie przepada, ale jesli robiles zakupy, potem sie zalogowales lub od razu sie zalogowales i potem robiles zakupy (bez znaczenia), to potem dopiero po zalogowaniu masz dostepny koszyk, z tym, ze masz od razu po zalogowaniu sie podglad na koszyk z wzmianka, ze dane produkty byly wczesniej wybrane na identyfikatorze innej sesji.

Czyli dyskryminacja, jak się nie zaloguję to mój koszyk przepadnie.
Trochę niebardzo moim zdaniem.
mokry
no, mozna ew przechowac w cookies id sesji
REN
Kermit troche przesadzasz w druga strone. Czego oczekujesz? Ze bedac totalnym anonimem bedziesz zbieral same profity?
DjKermit
Cytat(REN @ 20.11.2006, 01:05:38 ) *
Kermit troche przesadzasz w druga strone. Czego oczekujesz? Ze bedac totalnym anonimem bedziesz zbieral same profity?

Nie wydaje mi się żebym przesadzał, bo niby dlaczego mam być inaczej traktowany tylko dlatego że się nie zalogowałem (nie chciałem, zapomniałem, z rostargnienia - powód mało ważny).
W końcu to sklep, ma zarabiać pieniądze, czyli wypadałoby pieścić każdego klienta żeby nie uciekł, klient nasz pan jak mówi przysłowie.
Poza tym to tylko opinia tak jak kolega prosił.
REN
Co ty wiesz o zarabianiu pieniedzy? smile.gif ale to tylko moja opinia winksmiley.jpg taki skrot myslowy biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.