Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem dot. dostępności produktów w sklepie
Forum PHP.pl > Forum > Bazy danych > MySQL
milmen
Witam.
Ten temat to w zasadzie prośba o poradę dot. modyfikacji dostępności sztuk produktu w sklepie internetowym. Nie znalazłem nigdzie na forum wątku dotyczącego mojego problemu ani lepszego miejsca na zadanie pytania.
Mianowicie jestem w trakcie pisania sklepu internetowego. W tabeli z produktami przechowuję również liczbę dostępnych towarów w magazynie. Gdy klient klika w ikonke koszyka przy danym produkcie, liczba sztuk tego produktu powinna się automatycznie zmniejszyć jako że w tym samym czasie również inne osoby mogą dodać ten produkt do koszyka i skrypt powinien wiedzieć ile sztuk produktu w tym momencie jest dostępnych. Tak naprawdę nie wiemy, czy klient nie zrezygnuje z zakupów (wtedy dostępność sztuk powinniśmy zwiększyć o liczbę sztuk pobranych przez klienta do koszyka).
Jak macie to rozwiązane? Dodatkowa tymczasowa tabela z id produktu i ilością sztuk, która jest na bieżąco modyfikowana i przy realizacji zamówienia głowna tabela produktów jest dopiero aktualizowana (a dokładnie pole z liczbą dostępnych sztuk)? Właściwie klient może w każdej chwili zamknąć okno przeglądarki i nie wiemy co dalej?
Proszę, naprowadźcie mnie na dobre rozwiązanie, nie chciałbym się później obudzić z ręką w nocniku smile.gif

Pozdr.
phpion
Ilość dostępnych produktów zmniejszaj dopiero w momencie złożenia zamówienia przez klienta. Musisz też przy składaniu zamówienia postawić jakiś walidator, który sprawdzi, czy towar który klient zamawia jest jeszcze na stanie. Nie możesz tego sprawdzać tylko w momencie dodawania produktu do koszyka, bo w międzyczasie (pomiędzy dodaniem, a złożeniem zamówienia) inny klient może złożyć zamówienie, które wyczerpie limit produktów na stanie.
milmen
Dzięki za odpowiedź. Tak też na początku planowałem, z tym że...
Scenariusz: klient X wchodzi do sklepu, znajduje dany produkt, którego jest raptem 5 sztuk i do koszyka dodaj wszystkie 5 sztuk.
5 sekund później klient Y wybiera dokładnie ten sam produkt (widzi, że jest dostępny, bo klient X nie zdążył w 5 sekund złożyć jeszcze zamówienia) i powiedzmy do koszyka dodaje 3 sztuki. I w tym momencie trwa walka kto szybciej złoży zamówienie. Oczywiście na samym końcu sprawdzam jeszcze raz dostępność produktów i w przypadku, gdy klient Y złożył zamówienie szybciej niż klient X to klient X przy składaniu zamówienia powinien zostać poinformowany, że niestety ktoś go wyprzedził i zamiast 5 sztuk może nabyć tylko 2 sztuki? (bo Y kupił 3 przed nim). Jeśli tak generalnie funkcjonują sklepy to OK, ja nie mam z tym problemu i z chęcią tak to rozwiążę, chciałbym tylko poznać jeszcze czyjąś opinię w tym temacie.

Dzięki smile.gif
phpion
Dokładnie tak jak napisałeś. Odnieś to do zwykłego sklepu. Wzięcie towaru z półki (włożenie do koszyka) i zasuwanie do kasy (złożenie zamówienia) wygląda nieco inaczej, bo druga osoba nie weźmie towaru z półki (bo poprzednia zapieprza z nim już do kasy). Ale przykład: mamy na półce 10 produktów, a 5 pierwszych sprzedanych sztuk tego towaru objętych jest promocją. Pierwszy kolo bierze 5 sztuk, drugi 3 i obaj zasuwają do kasy. W tym momencie nie ma znaczenia kto pierwszy wziął towar do ręki tylko kto pierwszy go kupi. Jeśli ten z 5 sztukami to drugi nie dostanie rabatu (limit wyczerpany). Jeśli ten z 3 sztukami to ten z 5 sztukami dostanie rabat na 2 spośród posiadanych 5 sztuk.
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.