![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 12.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich.
Oto mój koszyk na zakupy ![]()
Pozostało mi tylko zapis mojego zamówienia do bazy danych MySQL . Tutaj pojawia się problem bo nie mam pojęcia jak to zrobić. Stworzyłbym tabelę 'zamowienia' i tam przechowywałbym id_zamowienia, nazwy produktów, cene, date_zamowienia i id_uzytkownika. Na stronie posiadam system logowania i nazwa_uzytkownika trzymam w sesji. Jest ktoś w stanie mi pomóc bądź nakierować jak to zrobić ![]() Dziękuję i pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 4 Dołączył: 11.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
No to zależy jak obsługujesz bazę. Najlepiej byłoby przez PDO przekazać obiekt(-y) do bazy. Musisz mieć tabelę, w której trzymasz zamówienia i tam to dodajesz.
Co do struktury bazy (póki nie zamierzasz wykorzystywać jej jako DW) to musisz ją znormalizować - nazwa produktu nie może się pojawić w zamówieniu (tylko jego id jako klucz obcy). |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 12.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Stworzyłem sobie coś takiego:
nazwa_uzytkownika jest unikatowa więc to tak jakby tam było id_uzytkownika. Wszystko fajnie tylko że jak kliknę przycisk złóż zamówienie i w koszyku mam np.3 produkty to w bazie danych pojawiają mi się 3 rekordy. Czy istnieje taka możliwość by w jednym rekordzie trzymać takie 3 zamówienia. ![]() idzamowienia:1 nazwa_uzytkownika: xxxxxx idgra: 15, 17, 45 suma: 340zł data_zamowienia: xxxx-xx-xx Czyli użytkownik zamówił trzy produkty i wszystko jest w jednym zamówieniu . Czytałem trochę o PDO ale termin zbytnio nagli więc nie mam czasu obecnie by uczyć się czegoś nowego. a co oznacza skrót DW ![]() ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 127 Pomógł: 32 Dołączył: 8.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Lepiej zrobić tabelę "zakupy" z kolumnami idzamowienia, sztuk, ID produktu, Cena i w tabeli "zamowienia".
Znacznie bardziej funkcjonalne, np. potem można prowadzić z tego różne statystyki i wiele innych. Poza tym jest szybsze IMHO Teoretycznie mógbyś trzymać cały koszyk w zamowieniach w formacie "id1,cena1,sztuk1|id2,cena2,sztuk2|id3,cena3,sztuk3(...)" ale to jest mało eleganckie... Ten post edytował altruista2 18.02.2010, 00:33:56 -------------------- Jeśli Ci pomogłem kliknij pomógł. W ten sposób temat zaświeci się na żółto i użytkownicy którzy pomagają nie będą musieli niepotrzebnie klikać. Dziękuję.
"Pomaganie" |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 144 Pomógł: 12 Dołączył: 16.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze masz trochę nie optymalny kod zliczenia ilości towarów jak i obliczanie wartości zamówienia można zrobić w jeden pętli foreach a nie w 2 !
Po drugie źle się do tego zabierasz. Masz w bazie tabele produkt w którym każdy produkt ma swoje unikalne id powiedzmy idproduct, każdy user ma też swoje id. Więc tworzymy tabele zamówienia w którym zawrzesz datę zamówienia adres wysyłki rodzaj płatności id klineta itp: idzamowienia,przesylka,user_iduser .... (user_iduser jest kluczem obcym który powinien łączyć się z id w tabeli userzy) dodatkowo w tabeli zamowienia tworzysz klucz obcy id_zamowione_produkty i tworzysz tabele pomocnczą, która zawiera id produktu zamówionego oraz id danego zamowienia: zamowienia_idzamowienia , product_idproduct W ten sposób otrzymasz dobrze znormalizowaną bazę danych ponieważ nie powielasz nazw i innych danych dotyczących produktów itp. Pamiętaj o otworzeniu odpowiednich więzów integralności ( ALTER TABLE ADD CONSTRAINT ..... ), wtedy możesz się zabezpieczyć przed usunięciem danego produktu z tabeli produts gdzy dany towar jest zamówiony itp. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 12.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
dziękuję wszystkim za odpowiedź ale moje pytanie brzmiało inaczej.
Może i moje rozwiązanie co do tabeli nie jest optymalne ale chciałbym najpierw to zrobić na moim przykładzie bo ja nadal nie wiem jak to zapisać w kodzie by mi tak zapisywało jak chce. Przy rejestracji użytkownika , zbieram wszystkie dane potrzebne do wysyłki i nazwa_uzytkownika jest unikalna więc nie mogą istnieć dwa takie same loginy w bazie. To jest taki mój id_user ![]() Cytat Po pierwsze masz trochę nie optymalny kod zliczenia ilości towarów jak i obliczanie wartości zamówienia można zrobić w jeden pętli foreach a nie w 2 ! To prawda ![]() ![]() Cytat Teoretycznie mógbyś trzymać cały koszyk w zamowieniach w formacie "id1,cena1,sztuk1|id2,cena2,sztuk2|id3,cena3,sztuk3(...)" ale to jest mało eleganckie... Jak to zapisać w postaci kodu ![]() Interesuje mnie na razie jakiś prosty sposób. Nie musi być jak najbardziej optymalny. Pozdrawiam |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 28.05.2025 - 05:00 |