php Sklep

0

Sklep. Jak zacząć ? Widzialem podobny temat dzisiaj ale chce zacząć swój.

0
  1. Zrob cruda na produkty
  2. Zrób panel admina, aby ogarniać produkty i zamowienia
  3. Zrób koszyk
  4. Zrób zamówienia
  5. Zrób płatności
  6. Zrób front end
  7. Zrób mailing

Kolejność w powyższej liście jest losowa. Czy taka odpowiedź Cie satysfakcjonuje?

2

Już lepiej zrób w wp, presta, przynajmniej minimalne standardy bezpieczeństwa będziesz miał :)

1

Z doświadczenia Ci powiem, że lepiej wykorzystać jakiegoś gotowca. Czy to SaaS czy open source. Stworzenie w pełni funkcjonalnego sklepu z różnymi metodami płatności itp itd to olbrzymie wyzwanie jest i potrzeba na to kilogramy czasu

0

Dziekuje za odpowiedzi. BTW zapomnialem hasla i tego emaila jaki byl wiec zarejestrowalem sie na inne konto.

Mam pytanie bo mnie gnębi. Odnosnie zaprojektowania bazy danych.
Załóżmy ze chce miec kilka kategorii:

  • Spodnie
  • Buty
  • Czapki
  • RTV
  • Konsole

Mam rozumiec ze to są tabele ?? Mam je zapisac w jakiejs tabeli sterujacej czy jak i jakj tak to w jaki sposob potem sie dobrac do tego ?
Powiedzmy ze dodam do kategorii CZAPKI kilkanascie modeli i klient doda do koszyka. w sesji bedzie wlasnie co bedzie ? bo musi byc cos co bedzie "wiedzialo" ze to ta wlasnie kategoria.
Jesli ustawie (z przykladu z innego tematu) sesje:

$_SESSION['cart'][] = ['kategoria'=>'czapki', 'id'=>'id'];

Tylko skad ja wezme te nazwe kategorii i id ??

Zeby wylistowac jako linki w htmlu musze podstawic jakies dane pod nie azeby po klikneciu klient mogl przejść do tego działu. Tylko jak to w takim razie zrobic ?

0

Stwórz sobie tabelę category przechowującą kategorie, możesz tam sobie stworzyć wręcz jakieś drzewo z rodzicami itp. Potem zrób sobie tabelę items gdzie będziesz miał ich opisy. Jeśli wszystkie przedmioty będą miały takie same parametry (rozmiar, kolor itp) do ustawiania to taka podstawowa rzecz Ci wystarczy. W sesji wtedy w najprostszym przypadku wystarczy Ci id itemu, kategoria itp nie jest potrzebna.
Niestety patrząc na poziom wiedzy (nie zrozum mnie źle) powinieneś zdecydowanie skorzystać z gotowca. Chyba, że to projekt do nauki. Wtedy to super ambitnie :)

linki też możesz generować sobie na podstawie tych id, które będziesz posiadał.

0

Dzieki za odpowiedz. Tak to do nauki.
Jak ta tabela sterujaca mialaby wygladac? Moglbys pokazac na przykladzie jakie dane wprowadzic ?

0

Tabela category:
id,
nazwa,
jeśli chcesz to kategoria rodzic,
może być opis

Tabela items:
id,
nazwa,
opis krótki,
długi,
id kategorii,
cena,
dostępna ilość.

Wtedy jak dodasz przedmiot do koszyka to możesz w sesji trzymać tylko id przedmiotu. Wyświetlenie koszyka to po prostu wtedy wyświetlenie listy przdmiotów, których id posiadasz więc easy ;)
Gdyby coś dalej to pytaj śmiało ;)

0

Nie bardzo wiem co mam z tymi tabelami robic 😂
Jakby to bylo wszystko w jednej to nie ma problemu bo wyswietlam z jednej wszystko a tu....sory za lamerskie pytanie ale jak sie dobrac do tych danych i czt te dwie tabele sa od siebie zalezne??
Kolejne pytanie jesli mozna bo pisales zeby wprowadzic nazwy kategorii do tabeli a tu jest chyba inaczej. Nie bardzo to rozumiem. Jakbys mogl na moze prpstszym przykladzie wytlumaczyc jakbys mial czas i ochote to bardzo dziekuje z gory.
Nie wiem jak wprowadzic te kategorie do jednej tabeli a potem wywolywac chyba ze zle kombinuje

2

Odpowiem tak: od prawie 16 lat moim głównym klientem jest firma której najpierw od podstaw zbudowałem sklep internetowy, a następnie ulepszam i buduje kolejne wersje zgodnie z roznymi trendami. Aktualnie od półtora roku(!!!) pracuje nad nową wersją sklepu jednocześnie ulepszając poprzednią. Nowa wersja (produkcyjna) zostanie uruchomiona prawdopodobnie nie wcześniej niż we wrześniu.

Z tym że, jest to sklep średniej wielkości obsługujący kilkaset zamówień dziennie (od 300 do nawet ponad tysiąca dziennie w szczycie).

Od tego najwięcej zależy - jeżeli to ma być mały sklep, oferujący niszowy asortyment to najlepszy jest jakiś gotowiec, ale taki, który jest sukcesywnie ulepszany / aktualizowany.

Natomiast przy większym sklepie zalecałbym albo rozwiązanie dedykowane, albo gotowca w którym się zna niemal każdą linię kodu.

Krótkie za i przeciw jeżeli chodzi o rozwiązania dedykowane i gotowce.

Koszty: gotowiec początkowo mało kosztuje, później jednak wprowadzanie zmian może być kosztowne, jeżeli programista, tak jak wspomniałem wyżej - nie zna niemal każdej linii kodu. Co więcej, jeżeli producent gotowca wprowadza aktualizacje, mogą wystąpić konflikty między tym co programista robi niestandardowego a nowymi rzeczami które wprowadza oryginalny autor gotowca.

Przy rozwiązaniu dedykowanym jest odwrotnie, koszty początkowe są duże, ale później aktualizacje tańsze.

Szybkość uruchomienia sklepu: Gotowiec uruchamia się szybko, na rozwiązanie dedykowane pisane od podstaw zazwyczaj trzeba czekać kilka miesięcy, piszę o jednym doświadczonym programiście, nie początkującym. Większa ilość programistów nie przekłada się wprost proporcjonalnie do szybkości dewelopingu, a przy jakichś konfliktach i niezgodościach między programistami, może to być wręcz szkodliwe, solo developer ma też swoje zalety.

Nadążanie za trendami i nowościami w e-commerce: bardzo dobry gotowiec to taki gdzie są częste aktualizacje, reagujące na nowości na rynku, nie każdy taki jest, z zasady mając swoje własne oprogramowanie można bardzo szybko reagować, szybciej niż aktualizacje z gotowca.

Konflikt z programistą: przy gotowcu łatwiej wymienić programistę, tym bardziej im większe community ma gotowiec, czym lepszą dokumentację. Gorzej z rozwiązaniem dedykowanym, jeżeli tracisz główny "mózg" który to wszystko stworzył. Tutaj rada - zawsze wymagać od programisty tworzenia dokumentacji technicznej, nawet jeżeli podroży to koszty o 20-30%, to rodzaj polisy ubezpieczeniowej. Poza tym dobry programista zawsze tworzy dokumentację - i tutaj niestety jeżeli chodzi o nasze polskie firmy to jest ogólnie niedobrze.

1

Do tabeli category wrzucasz sobie wpis np:
id: 1,
name: Buty
pozostałe dwa pola pomińmy na razie.

Potem w tabeli items robisz sobie wpis:
id: 1
nazwa: Super adasie
opis krótki: takie fajne buty
długi: nie ma, bo mi się długie opisy nie podobają
id kategorii: 1
cena: 1500100900
dostępna ilość: 2.

Dzięki czemuś takiemu możesz ładnie pobierać sobie z bazy wszystkie przedmioty będące w kategorii buty. Mógłbyś to zrobić oczywiście w jednej tabeli (zamiast id kategorii dałbyś po prostu kategoria i tam jakaś słowna nazwa albo enum), ale zakładam, że to ma iść w stronę rozbudowy. Masz tu zależność 1 do wielu - do jednej kategorii może być przypisanych wiele przedmiotów, ale jeden przedmiot może być do jednej kategorii. Ogarnij sobie kurs sql od Zelenta, na pewno Ci to trochę rozjaśni . Jak te tabele ze sobą połączyć przeczytasz tutaj//www.w3schools.com/sql/sql_join.asp

0

Jeszcze parę informacji, żebyś wiedział na co się porywasz.

Mój sklep składa się obecnie z około 150 tabel SQL, oraz kilkunastu kolekcji w bazie typu NoSQL.

Musisz zbudować system który się nie zadławi zarówno ruchem jak i danymi. W szczycie potrafi być i 20-30 requestów HTTP na sekundę które potrzebują danych z bazy danych o wielkości kilku GB. W bazie np. jest prawie 400 tys. produktów. Żeby to obsłużyć wymagane są ZAAWANSOWANE mechanizmy cache, w tym m.in. celu stworzyłem bibliotekę cache (dostępną na github) która synchronizuje dostęp procesów do cache.

RODO i ochrona danych - jeżeli nie masz człowieka od RODO który to wszystko ogarnia, sam musisz to zrobić, stworzyć zabezpieczenia, procedury, etc. tymczasem kary i odpowiedzialność jest wielka

Albo: chcesz być konkurencyjny to musisz zbudować interfejsy wymiany danych z różnymi hurtowniami, albo dostarczycielami np. kluczy cyfrowych, albo ebooków: czeka Cię analiza dokumentacji API, wdrożenie, to jest dużo pracy.

Takich tematów jest o wiele więcej, już mi się nie chce wymieniać.

Nie chcę Cię zniechęcać, chcę Ci tylko pokazać, że nie zrobisz tego tak szybko, jak prawdopodobnie myślisz że zrobisz, to jest dłuuuuga droga.

0

Prosze o rozjasnienie sytuacji. Jesli mozna to w punktach. Bedzie prosciej.

  1. Czy ta tabela "Buty" jest jedną tabelą tylko do tej kategorii czyli butów? Czy to tabela do ktorej dodaje sie kolejne rekordy z nazwami np. CZAPKI , SPODNIE itd...

  2. Jesli pierwsza tabela jest dla wszystkich ze tak powiem kategorii tj. Buty, Spodnie, Czapki, RTV itd... i zapisywane sa rekordy jeden po drugim z kolejnym ID to jeszcze rozumiem ale...

  3. Jesli tabela BUTY jest tylko dla BUTÓW tak wiec trzeba ustawiac kazda tabele z osobna dla kazdej kategorii. Ok. Rozumiem. Tyle ze w jaki sposob pobrac / wyświetlic jakoby linki jako menu ? Tzn jesli bedzie duzo tabel jako kategorie i ich nazwy beda: BUTY, CZAPKI? RTV, SPODNIE, BIELIZNA....? przeciez w zapytaniu podaje sie jedna nazwe tabeli i ja sie wtswietla tzn jej zawartosc a tutaj nawet nie wiem ile i jakie ich nazwy beda. Jak to zrobic?

  4. Jesli juz nawet sie uporam z tymi linkami to co podstawic pod url ($_GET)

<a href="show_items.php?action=show.....i co tu dalej.....>Nazwa kategorii z bazy</a>
  1. Wlasnie w jaki sposob dobrac sie do produktow nie znajac ich nazw bo generalnie ich nie znam.
    Tamte przyklady pokazuja jak sie łączy te tabele ale tam są znane nazwy. Tutaj musze je jakos pobrac. Jak???

Edit. Znalazlem cos takiego:

$result = mysql_query("show tables"); // run the query and assign the result to $result
while($table = mysql_fetch_array($result)) { // go through each row that was returned in $result
    echo($table[0] . "<BR>");    // print the table that was returned on that row.
}

Lub

SHOW TABLES FROM my_database LIKE '%user%'

Co wyswietli wszystkie nazwy baz danych w ktorych zawarta jest fraza USER. I to by bylo dobre rozwiazanie bo nie chce pobrac nazw b.danych przedmiotow tez tylko kategorii. W tym przypadku dobrym rozwiazaniem jest dldanie jakiegos przyrostka do nazwy bazy danych podczas jej ustawienia?? Przykladowo chce ustawic nazwe BUTY, CZAPKI, SPODNIE ale ze potem bede chcial wysw ich nazwy i tylko te nazwy bez baz danych przedmiotow to ich nazwy nalezaloby zmienic na:

  • kat_buty
  • kat_czapki
  • kat_spodnie
  1. I teraz uzyc tego przykladu z LIKE??
    Czy to jest dobry pomysl czy to sie robi jakos prosciej
    Ale chyba zle to kombinuje bo teraz nawet jak mam ich nazwy to jak sie dostac do "srodka"

Prosilbym jeski ktos ma chwile i moglby mi odpowiedziec na moje wszystkie pytania. Sa wazne dla mnie

1

Nie masz tabeli buty czy czapki. Masz tabelę przedmioty, w której jest kolumna kategoria definiująca czym jest dany przedmiot. Musisz zacząć myśleć trochę bardziej abstrakcyjnie ;)
Do linków po prostu dodajesz id pojedynczego przedmiotu jak chcesz wyświetlić jego kartę lub id kategorii jak chcesz wyświetlić wszystkie czapki. Zapytania na zasadzie pobierz wszystko z tabeli przedmioty gdzie od kategorii i parametr z get.

Przerób sobie cały kurs, który Ci wysłałem wcześniej i to powinno trochę rozjaśnić.

0

Tak, wlasnie ogladalem przed chwila.
Czyli jest jedna tabela 'Kategorie' a w niej kategorie jako rekordy (wiersze) tj:

  • Buty
  • Czapki
  • Spodnie
  • RTV

Tabela 'Kategorie'
ID, Nazwa (Buty)
ID, Nazwa (SPOIDNIE)
ID, Nazwa (RTV)
itd.....

I teraz czym jest tabela Przedmioty ? Tabela przedmioty jest tez jedna dla wszystkich w/w tabel czy Przedmioty to tabele kazda dla innej kategorii ?? i czym jest id kategorii

Jesli to sa tabele kazda do innej kategorii to jak je potem wywolac ?

Nie denerwuj sie :) wiem ze dla Ciebie to proste pytnia ale nie kumam tego. Ten kurs malo mi przyblizyl

Cytuje Ciebie:
"Do linków po prostu dodajesz id pojedynczego przedmiotu jak chcesz wyświetlić jego kartę lub id kategorii jak chcesz wyświetlić wszystkie czapki. Zapytania na zasadzie pobierz wszystko z tabeli przedmioty gdzie od kategorii i parametr z get."

Pod link podstawiam konkretne ID z tej tabeli z kazdej kolumny - ok. W momencie kiedy dodawac bede nowe wiersze w tabeli Kategorie ich ID bedzie rozne - to tez wiadomo. Teraz jak juz wspomnialem podstawiam pod link ID. Nie rozumiem jednego. Przekazujac to ID przykladowo '7' gdzie znajde te '7' w tabeli Przedmioty ? Tam jest tez ID ale raczej watpie zeby bylo takie samo.

Jesli mam ID=7 przekazane z tabeli Kategorie z kolumny Buty i chce wyswietlic wszystkie buty z tabeli Przedmioty to jak to zrobic ??
Nawet jakby to musialbym przekazac cos co bedzie identyfikowalo te tabele przedmioty z butami.
Tego nie rozumiem po prostu. samo przekazanie id nic mi nie da chyba

I czym jest to 'id kategorii' i co sie z tym wiąże.

Jesli to jest jedna tabela tak jak z tą Kategorie to moze dodac cos a'la pole ktore bedzie identyfikowalo te tabele tj rekordy i zamiast przekazywac id to przekazac nazwe czyli

a href=pokaz.php?id=buty

i teraz kazdy wiersz w tabeli Przedmioty bedzie mial taka budowe

ID, nazwa (super Nike buciory), nazwa2 (buty)

i teraz w zapytaniu pobrac tylko te pola ktore maja takie ID czyli Buty

Nie iwem czy jest to dobre rozwiazanie ale powinno dzialac

0

W tabeli kategorie wrzucasz tylko kategorie i przypisujesz im ID.
W tabeli produkty wrzucasz tylko produkty i w jednej z kolumn podajesz dla każdego produktu ID kategorii do której należy.

ID to unikalny identyfikator.

Dzięki temu jak będziesz chciał pobrać np wszystkie produkty z kategorii czapki to podajesz w zapytaniu ID tej kategorii i proszę bardzo.

0
karpov napisał(a):

W tabeli kategorie wrzucasz tylko kategorie i przypisujesz im ID.
W tabeli produkty wrzucasz tylko produkty i w jednej z kolumn podajesz dla każdego produktu ID kategorii do której należy.

ID to unikalny identyfikator.

Dzięki temu jak będziesz chciał pobrać np wszystkie produkty z kategorii czapki to podajesz w zapytaniu ID tej kategorii i proszę bardzo.

Dziekuje za odpowiedz.
jak sie dostac do produktow (calych) po ID majac to w linku ? tylko link przeciez nie przekazuje nazwy tabeli.

1
zdun napisał(a):

Dziekuje za odpowiedz.
jak sie dostac do produktow (calych) po ID majac to w linku ? tylko link przeciez nie przekazuje nazwy tabeli.

O tym decyduje np, Kontroler, poczytaj o architekturze MVC - Model Viewer Controller.

Model to w uproszczeniu Twoja tabela SQL
Viewer to w uproszczeniu HTML który zaprezentuje np. produkt
Controller to kontroler który rozpozna "po linku" o jaki Model chodzi, pobierze go z Bazy i zaprezentuje przy pomocy Viewera

0

Prosty przykład:

index.php?category_id=XX&product_id=YY

dalej:

$category_id = $_GET['category_id']; // id kategorii
$product_id = $_GET['product_id']; // id produktu

I tyle :)

Oczywiście jest to bardzo "brzydki" przykład ale oddaje to w jaki sposób to działa :)

0
leonpro778 napisał(a):

Prosty przykład:

index.php?category_id=XX&product_id=YY

dalej:

$category_id = $_GET['category_id']; // id kategorii
$product_id = $_GET['product_id']; // id produktu

I tyle :)

Warto by było wsponieć tutaj o zabezpieczeniu przez SQLInjection... inaczej 5-letnie dziecko włamie Ci się do bazy danych,

0
TomRZ napisał(a):
zdun napisał(a):

Dziekuje za odpowiedz.
jak sie dostac do produktow (calych) po ID majac to w linku ? tylko link przeciez nie przekazuje nazwy tabeli.

O tym decyduje np, Kontroler, poczytaj o architekturze MVC - Model Viewer Controller.

Model to w uproszczeniu Twoja tabela SQL
Viewer to w uproszczeniu HTML który zaprezentuje np. produkt
Controller to kontroler który rozpozna "po linku" o jaki Model chodzi, pobierze go z Bazy i zaprezentuje przy pomocy Viewera

Jak dla mnie na ten czas dosc enigmatycznie

0

Skutki naszej Polskiej Szkoły w której nie uczy się abstrakcyjnego myślenia, miałem to samo, musiałem włożyć dużo wysiłku w to aby zmienić myślenie. Bez myślenia abstrakcyjnego bardzo ciężko programować.

0

No co ja mogę powiedzieć. Chcę się uczyć ale mam / jest blokada w tej postaci. To jak ogarne bedzie ok. Abstrakcja jest notabene dla mne abstrakcją..jak na razie

0

Przejdź sobie przez naukę frameworka PHP Symfony, potem się zabieraj za sklep. Jest tutorial na ich stronie. Tutorial jest po angielsku, chyba nie muszę wspominać, że angielski to podstawa przy programowaniu? W j. polskim znajdziesz już raczej tylko stare rzeczy i to nie najlepiej napisane / przetłumaczone.

0
zdun napisał(a):

No co ja mogę powiedzieć. Chcę się uczyć ale mam / jest blokada w tej postaci. To jak ogarne bedzie ok. Abstrakcja jest notabene dla mne abstrakcją..jak na razie

Jeżeli chcesz się uczyć to super tylko moim zdaniem porwałeś się na zbyt ambitny (nawet jak do nauki) projekt. Z pytań jakie zadajesz wnioskuję, że dopiero zaczynasz i może lepiej zacząć od jakiejś zwykłej TODO list?

0

Moze ktos mi jednak pomoze??

Mając link z id jak sie dobrac do tabeli z produktami. Nie czaje tego bo jesli sie ma tylko id to jak mozna odczytac cos jak sie nie zna jej nazwy

0

Masz tabelę items. Nazwa jest stała więc ją znasz :)
Robisz sobie select * from items where id = id_z_get I masz pobrany dany przedmiot. W tym przypadku kategoria nie jest Ci w ogóle potrzebna.
Możesz też pobrać sobie wszystkie przedmioty z danej kategorii. Select * from items where category_id = I'd kategorii z linku.

Linki do poszczególnych kategorii generuje aż sobie robiąc pętle po zawartości tabeli z kategoriami. Linki do przedmiotów analogicznie, ale po tabeli items.

Zrób sobie jeszcze jakiś kurs PHP w internetach to Ci to sporo jeszcze rozjaśni ;)

0

@pesymistycznyoptymista czyli to są dwie tabele jedna i druga maja stale nazwy. W takim przypadku wiem jak zrobic to co chce.
Myślałem ze tabela z przedmiotami tzn TABELE sa dla kazdej kategorii inne (maja inne nazwy) Wtedy pojawia sie problem wlasnie jak poznac jej nazwe majac tylko id.

Ok mialbym jeszcze jedno pytanie. W tabeli produkty (tam gzie sa wszystkie dane) mam dodac jakis id konkretnego produktu zeby moc wyswietlic go na karcie ? Tez to ma byc id auto increment?

0

Auto increment jest bardzo wygodne bo automatycznie generuje za Ciebie unikalne id a to w Twoim przypadku jest ważne. Tak jak pisał @pesymistycznyoptymista trochę wyżej. Mając jedną tabelę z przedmiotami nie jest Ci potrzebna tabela z kategoriami bowiem kategorię możesz trzymać w tej właśnie jednej tabeli. Zobacz sobie na taki przykład tabeli:

id_produktu | kategoria | nazwa | cena | ilosc | opis

W kolumnie kategoria kryje się NAZWA kategorii jako:
a) nazwa wyświetlana (oczywiście takiego sposobu nie polecam)
b) id do tabeli kategorie gdzie trzymasz wszystkie kategorie

Problem się robi dopiero, gdy do konkretnego produktu potrzebujesz różnych pól z jego właściwościami. Przykładowo, w sklepie sprzedajesz buty i długopisy. Wiadomo, but będzie miał różny rozmiar natomiast długopis już nie będzie miał takiej właściwości. Dlatego ujednolicona tabela w której trzyma się wszystkie produkty będzie już nietrafionym pomysłem. Da się oczywiście to zrobić kosztem późniejszych nerwów i przekleństw ale kto by się chciał później z tym szarpać.

Dlatego już na tym etapie potrzebne jest też (tak jak pisał @TomRZ) coś w tym rodzaju abstrakcyjnego myślenia. Kombinuj tak aby łatwo można było później wszystko rozbudować.

0

Zawsze mozna ustalic na sztywno pola i dodac jedno pole "specjalne" gdzie to admin bedzie mogl wpisac jakies dodatkowe informacje typu: kolor, rozmiar itd....troche toporne ale dzialac zadziala😂

Lub majac takie pola rozmiar, kolor itd przy braku wyboru przypisywac jakas wartosc nie wiem : "puste" a podczas wyswietlenia na karcie produktu sprawdzac warunkiem i jesli istnieje to nie pokazywac tej opcji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1