Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sklep, pomysl na wyglad zamowien
Forum PHP.pl > Forum > Przedszkole
pavelb
Witam!
Mam problem z ostatnim etapem kupowania w sklepie internetowym, a mianowicie gdzie trzeba dane z sesji zapisac w bazie danych.
Jakie do tego celu proponujecie zrobic tabele i jakie dane powiny byc zapisane w danej tabeli, kombinowalem juz roznie ale mi nie wychodzilo bo miedzy innymi przy kupieniu 3 przedmiotow dodaje 3 rekody do bazy danych i nie wiedzialem jak zrobic aby te 3 rekordy rozpoznawalo jako jedno zamowienie.
z gory wielkie thx jesli ktos opisze jakie rozwiazania zastosowal w swoim sklepie i na co zwrocic szczegolna uwage,
Pozdrawaiam smile.gif
Athlan
ja proponuje przeczytać ten temat:
Temat: php problem z sesja
jako, że jesteś jego autorem smile.gif

tam zaproponawałem takie coś, aby w jednym rekordie zamowienia znajdowały się takie informacje:

- id zamówienia
- id usera zamawiającego
- itemy które chce kupić (ich ID oddzielone przecinkiem)

jak oddzielić przeinkim i jak to rozdzielić wspomniałem we wcześniej wspomnianym temacie

pozdrawiam smile.gif
Ludvik
Utworz 3 talice:

Zamówienia: identyfikator zamówienia, identyfikator użytkownika
Przedmioty: identyfikator przedmiotu i inne informacje
Przedmioty zamówienia: identyfikator zamówienia, identyfikator powiązanego z nim przedmiotu, ilość

Do zamówień wstawiasz 1 rekord z id zamawiającego użytkownika. Następnie do trzeciej tabeli wstawiasz przedmioty wymienione w zamówieniu i zapisujesz id obecnego zamówienia dla każdego z nich.
pavelb
hmm...
a w tabeli zamowienia nie zapisywac cen produktu?
Bo w momencie jak zaktualizuje tabele produkt i jego cene to w zamowieniach sie automatycznie zmieni cena i byla by wdety afera snitch.gif
Ludvik
Jeżeli chcesz zrobić coś takiego, to dopisuj ceny do tabeli wiążącej zamówienia z produktami.
Athlan
dlatego zrób jak mowiłem:

- tabela z zamówieniami (id zamówienia, id_produktu, id_usera)
- tabela produktów (id_produktu, cena i jeszcze co chcesz)
- userzy (id_usera, co tam chcesz)

i wtedy gdy w tabeli produktów zmienisz cenę, to w zamówieniu automatycznie też się zmieni bo pobierzesz ją LEFT JOIN'em (http://dev.mysql.com/doc/refman/5.0/en/left-join-optimization.html) z tabeli produktów, to samo dotyczy się usera gdy ten nieoczekiwanie zmieni nick albo co smile.gif
Ludvik
Z tym, że on chciał uzyskać odwrotny efekt smile.gif Chyba nikt nie oczekuje, że wraz ze zmianą aktualnej ceny, powinny zmienić się wartości obsłużonych już zamówień. Oszczędność jednej tabeli w twojej wersji spowoduje, że dopisanie jakichkolwiek informacji do zamówienia (nie licząc produktów) stanie się dość problematyczne - chyba nie będziesz przypisywał sposobu płatności do każdego przedmiotu?
pavelb
Własnie wartosc zamowienia powina zostac zawsze taka sama obojetnie czy produkt ztanieje czy co, dlatego chyba lepiej w tabeli zamowienia dac kolumne cena no i masz racje bede tez musial dodac kolumne z rodzajem przesylki smile.gif
Athlan
sposób płatności powinien być w tabeli z zamówieniami bez 2 słów, w tym celu proponuję stworzyć jeszcze jedną tabele: "platnosci":

- id_platnosci
- inne parametry takie jak nazwa, czy dodatkow podatek czy coś smile.gif

pozdrwaiam, to jest tylko moje zdanie smile.gif
mls
Cytat(Athlan @ 2.07.2006, 19:18 ) *
i wtedy gdy w tabeli produktów zmienisz cenę, to w zamówieniu automatycznie też się zmieni bo pobierzesz ją LEFT JOIN'em (http://dev.mysql.com/doc/refman/5.0/en/left-join-optimization.html) z tabeli produktów, to samo dotyczy się usera gdy ten nieoczekiwanie zmieni nick albo co smile.gif


A nie sądzisz, że nie może być takiej sytuacji, w której zmienisz klientowi cenę produktu który jest już w jego zamówieniu? Dlatego cena musi być zapisywana w zamówieniu i musi pozostać niezmieniona.
Hacker
Radzę ci rozwiązać problem tak jak powiedział Ludvik
Czyli
Kod
tabela zamówienia: id, id_usera, płatność, rodzaj przesyłki, adres do przesyłki itp.
tabela produkty: id, cena, inne informacje...
tabela użytkownicy: id, imię, nazwisko, adres, (i co tam jeszcze chcesz)
tabela produkty_zamówione: id_produktu, id_zamówienia, cena


@Athlan
znasz takie pojęcia jak projektowanie baz danych oraz pierwsza i druga postać normalna (1NF, 2NF)?
php programmer
do każdego z tych przedmiotów dajesz id zamówinia (używasz do tego specjalnej kolumny id_zamowienia),
które to zamówienie (tylko jedno) przedtem dajesz do tabeli o nazwie zamównia,
tabela zamowienia ma swoje id a takze info kto zamówił, data itp
dzieki temu nie musisz za kazdym razem dawac tych informacji do przemiotów


USER ---> Zamówienia <--- Przedmioty
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.