Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Sklep internetowy
Durkane
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
aras785
post
Post #2





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Durkane
post
Post #4





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Durkane
post
Post #6





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Pyton_000
post
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


zapisujesz zserializowaną tablicę (ew. json)
Go to the top of the page
+Quote Post
aras785
post
Post #8





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował aras785 30.03.2016, 20:30:03
Go to the top of the page
+Quote Post
Johnas
post
Post #9





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


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...

Ten post edytował GodOfPeople 30.03.2016, 23:25:34


--------------------
Jak coś jest dobre, to nie znaczy że nie może być to lepsze - Ideały nie istnieją ;D
Strony internetowe Świnoujście
Go to the top of the page
+Quote Post
aras785
post
Post #10





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Durkane
post
Post #11





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
rad11
post
Post #12





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Durkane
post
Post #13





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

Ostrzeżenie: (0%)
-----


Wiem co i jak tylko do czego to się przydaje biggrin.gif
Go to the top of the page
+Quote Post
rad11
post
Post #14





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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ę.
Go to the top of the page
+Quote Post
Durkane
post
Post #15





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
rad11
post
Post #16





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Coś w ten deseń
Go to the top of the page
+Quote Post
Durkane
post
Post #17





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 28.07.2015

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 17:53