![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 1 Dołączył: 8.05.2010 Ostrzeżenie: (20%) ![]() ![]() |
Witam,
Mam mały problem z funkcjonowaniem koszyka w sklepie internetowym. Zastanawiam się nad działaniem koszyka i przechowalni w sklepie internetowym.Podczas tworzenia sklepu zmanipulowałem taka sytuacje ze dwóch klientów chce kupić jeden produkt w tym samym momencie lecz dostępna jest tylko jedna sztuka. W takim przypadku dochodzi do sytuacji, że jeżeli jeden z nich będzie szybszy to ten drugi podczas realizowania zamówienia dostanie komunikat, że ktoś był szybszy i produkt już nie jest dostępny żeby uniknąć takiej sytuacji postanowiłem zrobić tak, ze podczas gdy zalogowany użytkownik dodaje produkt do koszyka to dostępność danego produktu zmniejsza się o odpowiednia ilość. Lecz gdy np użytkownik wyloguje się i nie kupi produktu to jego koszyk czyści się i dostępność powraca do poprzedniego stanu.Lecz jeżeli się nie wyloguje to cron po 30 minutowej nieaktywności wyczyści jego koszyk. Problem polega na tym ze przy tym rozwiązaniu użytkownik niezalogowany nie może nic dodawać do koszyka oraz nie mogę stworzyć przechowalni. Chciałbym dowiedzieć się w jaki sposób rozwiązać ten problem żeby nie pokazywać komunikatów typu ktoś cie uprzedził. Nie oczekuję gotowego kodu php, lecz proszę o wskazówki teoretyczne. Z góry dziękuje za pomoc. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 749 Pomógł: 37 Dołączył: 3.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
kiedy ktoś jest nie zalogowany to również odejmujesz produkt ze stanu, dodajesz do koszyka, którego zawartość przechowujesz w jakiejś sesji. Jakąś informację zapisujesz w bazie, że jest produkt gdzieś w koszyku. Po 30 minutach tak samo czyścisz i przywracasz do stanu normalnego.
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Tak naprawdę najlepszym rozwiązaniem byłoby informowanie na bieżąco o produktach z koszyka. Choćby co przeładowanie strony, by w razie czego dostarczyć informację, że produkt chwilowo już jest niedostępny osobom, które mają go jeszcze w koszyku, ale nie zakupiły.
Właściwie to już przy bardzo niskich zapasach magazynowych informowałbym użytkownika, że w każdej chwili może zabraknąć towaru i transakcja może nie dojść do finalizacji oraz udostępniłbym w takiej sytuacji coś w rodzaju "zatrzymaj dla mnie w koszyku" i dopiero to bym odejmował od stanu, tak by użytkownik miał pewność, iż do końca transakcji nie zdąży nikt mu ostatniej sztuki "podwędzić". Oczywiście własny session_handler, który by w czasie zniszczenia sesji "zwrócił" do magazynu "zaklepane" produkty - obowiązkowy. Ogólnie rzecz biorąc - musiałbyś mieć mechanizm rezerwowania danej pozycji koszyka jako pewniak gdy dany produkt zacznie się zbliżać do granicy wyczerpania. Lepiej poinformować usera, by sam na to uważał i produkt zaklepał, niż się miał rozczarować w trakcie finalizacji zakupu -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 28.06.2025 - 13:17 |