Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Przedstawianie zamówień w bazie danych
Forum PHP.pl > Forum > Przedszkole
thomson89
Witam!

Jak przedstawić w bazie danych zamówienie w sklepie internetowym?

Jedną z możliwości nad którymi myślałem to zrobienie osobnej tabelki z produktami zamówionymi oraz z zamówieniami.

W produktach zamówienia byłyby dane o cenie produktu, jego id, id zamówienie, ilości. A w zamówieniu kto zamówił, kwotę, adres, sposoby płatności / wysyłki.

Pytanie tylko, czy jest to najbardziej optymalne rozwiązanie, czy istnieją lepsze?
naitsabes
Cytat(thomson89 @ 6.11.2010, 18:52:29 ) *
W produktach zamówienia byłyby dane o cenie produktu, jego id, id zamówienie, ilości. A w zamówieniu kto zamówił, kwotę, adres, sposoby płatności / wysyłki.


produkty zostaw jako jego id, cena itd...

w zamowieniu miej wszystkie dane : cena, adres, platnosc, id produktow itd...

tabela zamowienia jest dla Cb wiec wazne abys ty sie w niej orientowal
thomson89
Nie dla mnie, lecz dla programu.

Znowuż trzymanie wszystkich produktów w jednej tabeli z zamówieniem skutkuje czymś takim:
Kod
... | id_prod  | sztuk    | ceny
    | 1, 12, 7 | 12, 2, 4 | 12.40, 3.20, 4.5 |

Nie jest to zbyt ładne i wygodne w zapytaniach.
outsider
Zamówienie(podstawowe info.)
Zamówione produkty(id produkty zamowionego w zamowieniu o danym ID)
Produkty(info o produkcie)
CuteOne
Tabele:
users - user_id | login | adres | itd..
products - prduct_id | cena | nazwa | itd..
zamowienia - user_id | prduct_id | status

  1. SELECT u.adres, p.cena FROM users u, products p, zamowienia z WHERE u.user_id = z.user_id AND p.product_id = z.product_id AND z.STATUS != 3

*z.status:
1 - anulowano
2 - w trakcie realizacji
3 - zrealizowano
itd..

można też łatwiej przez LEFT JOIN..

thomson89
Cytat(*OuTSideR* @ 6.11.2010, 20:12:16 ) *
Zamówienie(podstawowe info.)
Zamówione produkty(id produkty zamowionego w zamowieniu o danym ID)
Produkty(info o produkcie)


Takiego rozdzielenia nie może być. Co jeśli zmienimy cenę produktu? Ktoś zapłacił za produkt 15zł, a tu nagle zamówienie zmienia mu się więcej o 5 x il. sztuk? Cena jest również potrzebna do paragonów i faktur...

Czyli potwierdzacie moją teorię w tym temacie.

Dzięki wszystkim!
outsider
Cytat
Co jeśli zmienimy cenę produktu? Ktoś zapłacił za produkt 15zł, a tu nagle zamówienie zmienia mu się więcej o 5 x il. sztuk? Cena jest również potrzebna do paragonów i faktur...

W tabeli Zamówienia nie będziesz przechowywał ceny zamówienia, będziesz ją obliczał na podstawie produktów należących do Zamówienia, a produkty należące do zmówienia mają swoją cenę w tabeli Produkty smile.gif Jeśli dobrze rozumiem, co napisałes
thomson89
No właśnie, o tym mówiłem, że cena musi zostać skopiowana. Niektóre zamówienia mogą być przetwarzane nawet 7 dni. W tym czasie ceny rynku mogą się zmienić i będzie trzeba zmieniać ceny produktów.

Użytkownik płaci, powiedzmy 128zł. Pracownik sklepu patrzy następnego dnia: wpłata 128zł, ale tutaj zamówienie jest na 245zł - ale co się stało?

Po zmianie cen produktów, system obliczył nową sumę zamówienia.
tehaha
przy złożeniu zamówienia powinieneś obliczyć całkowitą wartość należną i ją trzymać w tabeli z zamówieniami, bo przecież jak ceny towaru się zmienią to i tak klient ma dostać towar po takiej cenie jaka była w chwili zamówienia
thomson89
Ale jak już mówiłem wcześniej:
Cytat(thomson89 @ 6.11.2010, 20:56:01 ) *
Cena jest również potrzebna do paragonów i faktur...

a na fakturze / paragonie cena za produkt a nie tylko suma.
outsider
Ok, czyli w takim razie:
Zamówienia
Zamówione produkty -> dla zamówienia o danym ID (jest to kopia produktu z tabeli Produkty, przy realizacji zamówienia)
Produkty(ceny, opis itp.)

Ale wybór należy do Ciebie smile.gif


thomson89
Ale nazwy, opisu, ilosci sztuk i innych gowien jak np. limitow nie trzeba kopiować. Więc kopiuje tylko cenę smile.gif Ale to zostało wyjaśnione wyżej tongue.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.