Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Sklep internetowy
Forum PHP.pl > Forum > Przedszkole
Durkane
Witam.
Zacząłem robić sklep internetowy w ramach nauki we własnym zakresie. Zrobiłem już mniej więcej wygląd strony, logowanie oraz rejestrację. Jedynie problem jest przy koszyku, kupionych rzeczach, sprzedawanych itd.

Teraz przejdę do sedna, chodzi mi o to jak połączyć 2 tabele w MySQL w PHPMyAdmin bo nigdzie tam nie mogę takiego czegoś znaleźć... Chodzi mi o takie połączenie relacyjne, że dla danego id użytkownika w nowej tabeli przypisywane są przedmioty, które dodał i komentarze.

Tak się zastanawiałem nad tym jak ma działać koszyk i jedynie przychodzi mi do głowy takie coś, że dla użytkowników zakładana jest tabela, w której dodawane są przedmioty lub usuwane jak chce użytkownik. No, ale jak mamy 1000 użytkowników to 1000 tabel przeciąży serwer... Więc musi to być jedna tabela, w której dla konkretnego ID użytkownika przypisuje konkretne ID przedmiotu, który obserwuje (wrzucił do koszyka).

Dla osób niezalogowanych można przy wejściu na stronę nadawać id itd tworząc takiego jakby użytkownika, który kasowany jest po tym jak ktoś się zaloguje lub jak wyjdzie ze strony (tutaj za bardzo nie wiem jak kasować np. cookies po wyłączeniu strony). Można też dla niezalogowanych dawać informacje, że koszyk tylko po zalogowaniu do serwisu biggrin.gif

Nie wiem czy takie moje myślenie jest odpowiednie, dlatego chciałbym żeby ktoś mi doradził, poprawił moje myślenie i nakierował jak ustawiać to z bazami danych.
aras785
Cześć.

Ale mieszasz... biggrin.gif

Jeśli chodzi o koszyk to możesz zrobić tak, że zapisujesz ID | NAZWĘ | CENE w ciasteczku
Jeśli chodzi o bazę danych to:

2 tabele: ZAMOWIENIA i ZAMOWIENIA_PRODUKTY
W pierwszej tabeli będą dane dotyczące danych użytkownika, a w drugiej dane produktów jakie wybrał.

Struktura pierwszej (ZAMOWIENIA):

ID | ID_UZYTKOWNIK | IMIE ...itd

Tabela: ZAMOWIENIA_PRODUKTY
ID | ID_ZAMOWIENIA | NAZWA PRODUKTU | CENA itd.

I póżniej sobie pobierasz zamówiedla użytkownika 1, a następnie ID zamówienia łączysz z produktami z drugiej tabeli.
To tak na szybko biggrin.gif
nospor
Cytat
Jeśli chodzi o koszyk to możesz zrobić tak, że zapisujesz ID | NAZWĘ | CENE w ciasteczku
A potem pierwszy domorosly haker sobie pozmienia dane w ciasku i bedzie sie pultal ze w koszyku ma nowe Tv za 100zł a w sklepie kaza mu placic 2tys...
Durkane
Cytat(aras785 @ 29.03.2016, 14:25:38 ) *
Cześć.

Ale mieszasz... biggrin.gif

Jeśli chodzi o koszyk to możesz zrobić tak, że zapisujesz ID | NAZWĘ | CENE w ciasteczku
Jeśli chodzi o bazę danych to:

2 tabele: ZAMOWIENIA i ZAMOWIENIA_PRODUKTY
W pierwszej tabeli będą dane dotyczące danych użytkownika, a w drugiej dane produktów jakie wybrał.

Struktura pierwszej (ZAMOWIENIA):

ID | ID_UZYTKOWNIK | IMIE ...itd

Tabela: ZAMOWIENIA_PRODUKTY
ID | ID_ZAMOWIENIA | NAZWA PRODUKTU | CENA itd.

I póżniej sobie pobierasz zamówiedla użytkownika 1, a następnie ID zamówienia łączysz z produktami z drugiej tabeli.
To tak na szybko biggrin.gif


No trochę może i mieszam, w głowie mam to inaczej (taki już mój los) ^^. W Access to można było sobie relacyjnie ładnie połączyć to wszystko, a tutaj nigdzie takiej opcji nie widziałem biggrin.gif Ale później spróbuję tak jak napisałeś dziękuje smile.gif

Cytat(nospor @ 29.03.2016, 14:31:15 ) *
A potem pierwszy domorosly haker sobie pozmienia dane w ciasku i bedzie sie pultal ze w koszyku ma nowe Tv za 100zł a w sklepie kaza mu placic 2tys...


Właśnie wolałbym coś bezpieczniejszego biggrin.gif
Pyton_000
Przecież i tak musisz za każdym razem sprawdzać poprawność tych danych więc co za różnica.

Możesz te dane zapisać w BD nadając im jakiś bardzo losowy ciąg i ten ciąg zapisać w cookie.
Durkane
Cytat(aras785 @ 29.03.2016, 14:25:38 ) *
Jeśli chodzi o koszyk to możesz zrobić tak, że zapisujesz ID | NAZWĘ | CENE w ciasteczku


Pytanko do tego... Nie mam jak na razie sprawdzić dlatego pytam was tongue.gif Zapisałbym ID przedmiotu w ciasteczku i w koszyku bym pobierał dane przedmiotu po tym ID. Tylko teraz co jeżeli będziemy mieć 3 przedmioty w koszyku, czy ciasteczko np. 1 nie zostanie zastąpione tym 3 i nie przewidzę tego ile przedmiotów ktoś sobie doda, więc w zapytaniu o wszystkie dane będzie ciężko chyba to zapisać (dla mnie będzie jak dla początkującej osoby).

Takie rozwiązanie by było już bezpieczniejsze niż zapisywanie wszystkiego do ciasteczek i odczytywanie później, bo jak Pan wyżej napisał ktoś będzie mógł zmienić cenę i kłócić się z właścicielem.

Żeby nie było to siedzę i analizuję rozwiązania tego problemu, ale gdy już myślę, że mam odpowiednie to nagle wpada mi do głowy, że tak to nie będzie działać ;d
Pyton_000
zapisujesz zserializowaną tablicę (ew. json)
aras785
Cytat(nospor @ 29.03.2016, 15:31:15 ) *
A potem pierwszy domorosly haker sobie pozmienia dane w ciasku i bedzie sie pultal ze w koszyku ma nowe Tv za 100zł a w sklepie kaza mu placic 2tys...

A co to ma do bezpieczeństwa?
Ja sobie mogę w każdym sklepie zmienić w HTMLu cenę i pójdę się pultać? wtf...

Przykład:


Przy realizacji zamówienia pobierać ID produktu i wszystkie dane z tym związane.
Można zrobić to na masę sposób, a podałem koledze jeden z nich (przejrzysty).

Pozdrawiam
Johnas
Chodzi o to że podczas tworzenia tabeli koszyk i sprawdzania danych przez PHP nie ma możliwości oszukania skryptu i zrobienia zamówienia za inną cenę niż sprzedawca ustawi... W ciasteczkach można zmienić wartości, ale to nie jest moim zdaniem też jakoś bardzo niebezpieczne bo sprzedawca po złożonym zamówieniu przez klienta widzi wszystkie dane i ma dwa wyjścia (zaakceptować zamówienie, albo je odrzucić), choć w przypadku MediaMarktu, wątpię aby sprzedawca znał ceny wszystkich swoich produktów, dlatego podczas tworzenia sklepu, lepiej zrobić to raz, a porządnie...
aras785
Zaproponowałem trzymanie danych w ciasteczku ponieważ bez zapytań można pokazywać sumę wszystkich produktów w koszyku.
Przy finalizacji zamówienia i tak system musi sprawdzać czy ID z ciasteczek pasuje do produktów i pobiera wtedy z bazy ich dane (cene, nazwe) i pokazuje na podsmumowaniu zamówienia więc klient i tak zobaczy przed samym zamówieniem ile to tak naprawdę kosztuje.

Pozdrawiam
Durkane
Dziękuje ślicznie za odpowiedzi smile.gif Coś z tego na pewno wykorzystam tongue.gif
Mam taką prośbę bez zakładania nowego tematu. Mógłby mi ktoś wytłumaczyć łopatologicznie po co jest mvc, bo chce się tego nauczyć, ale jakoś istoty tego nie mogę załapać za bardzo... Prosiłbym też o podanie jakiegoś dobrego kursu,tutorialu, który pomoże mi w nauce i zrozumieniu istoty tego mvc, z góry dziękuję smile.gif
rad11
https://www.youtube.com/watch?v=Aw28-krO7ZM

Proste jak konstrukcja cepa.

MODEL odpowiada za komunikację z baza danych
VIEW odpowiada za warstwę prezentacji zazwyczaj przekazujesz parametry z controllera
CONTROLLER odpowiada za warstwę logiki zazwyczaj zarządzana tutaj modelem i przekazujesz dane do widoku
Durkane
Wiem co i jak tylko do czego to się przydaje biggrin.gif
rad11
Aby utrzymać ład i porządek w projekcie i aby ktoś kto przejmie po tobie pałeczkę czyli projekt nie złapał się za głowę i wyklinal swojego poprzednika. Ale również aby Ci ułatwić pracę.
Durkane
Czyli jeżeli dobrze rozumiem to jest po to, aby rozdzielić php itd od kodu html ? Oraz, aby kod nie był zbyt obszerny tylko ładnie zamknięty w klasach np. by nie powtarzać go kilka razy np. nie wywoływać zapytania co jakiś czas ?snitch.gif
rad11
Coś w ten deseń
Durkane
Ok dziękuje smile.gif Myślę, że to mi wystarczy w tym momencie smile.gif I dziękuje za ten tutorial na youtube przyda się bardzo. Znalazłem Polski, ale jest w 6 filmach i koleś tak za bardzo według mnie nie umie tego przekazać ;d
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.