Autor | Zpráva | ||
---|---|---|---|
Novic Profil * |
#1 · Zasláno: 3. 10. 2011, 15:49:38
V eshopu jsem používal pouze dph, cenu a akční cenu (slevu) – bez dph, které jsem měl uložené u každého produktu spolu s názvem, popisem atd v db.
Výhoda tohoto řešení byla v tom, že pro zobrazení ceny jsem jen otestoval zda-li je akční cena nastavena, nebo se má použít normální cena a případně přidal dph. To vše tedy bylo při výpisu zboží v kategorii možné udělat jedním dotazem do db. Nyní však potřebuji zavést velkoobchodní ceny pro různé skupiny obchodníků, chtěl bych umožnit např. slevu 10% při nákupu nad určitou hodnotu apod. Jakým způsobem to řešíte vy? Mohli byste mi trošku rozepsat jak máte udělanou databázi a jaké třídy a metody používáte? Původně jsem si říkal udělat metodu, které bych předával id produktu a ta by mi to z db všechno zjistila. Jenže představa že při výpisu produktů v kategorii mi to pošle třeba 30 dotazů do db navíc mi běhá hrůza po zádech a určitě je na to lepší řešení. |
||
Joker Profil |
#2 · Zasláno: 3. 10. 2011, 17:07:48 · Upravil/a: Joker
Novic:
Jednoduché řešení dát k uživateli sloupec s procentní slevou a cenu mu pak přepočítat ze základní ceny. Nevýhoda je, že pak bude mít stejnou slevu na všechny položky. Další možnost je udělat si pro ceny zvláštní tabulku: ID produktu, typ uživatele, cena Což by zároveň řešilo i ty akční slevy- základní cena by měla typ uživatele NULL, výběr ceny by byl nějak SELECT MIN(cena) FROM ceny WHERE id_produktu=$idProduktu AND (typ_uzivatele='$typ' OR typ_uzivatele IS NULL) .
|
||
Novic Profil * |
#3 · Zasláno: 3. 10. 2011, 18:03:29
Ono toho je více (sleva na skupinu, nebo na kategorii, nebo na samotné zboží. Navíc se do toho míchají varianty zboží.), ale jde mi spíše o systém jak to zpracovat. Na framework foru jsme se dopracovali k tomu, že je ideální si udělat třídu Price, která bude mít metody withTax atd.
Řekněme tedy, že při výpisu kategorie si zavolám třídu Products, která bude mít nějakou metodu např. selectProducts($category), která mi z databáze vytáhne informace o produktech (id, název, krátký popis, url). Další metoda by byla setPrices((array) $ids) která by volala třídu Price s array id produktů v konstruktoru. Třída Price by měla nějaké metody selectBasePrices a selectPrices které by vracely pole s cenami (tzn. nějaké query do db). Co si o takovém řešení myslíte? |
||
joe Profil |
#4 · Zasláno: 3. 10. 2011, 19:49:30
Udělal bych to tak, jak popisuje Joker ve druhé možnosti s tím, že ve výpisu bych zobrazoval "ceny od" a asi až teprve v detailu produktu zobrazil cenu pro případného přihlášeného uživatele. Což vlastně ten jeho dotaz dělá :)
Místo přímo ceny můžeš opět uvádět slevu v procentech. Můžeš přidat další sloupec, třeba pro tu slevovou kategorii apod. |
||
Petr ZZZ Profil |
#5 · Zasláno: 3. 10. 2011, 22:57:56 · Upravil/a: Petr ZZZ
joe:
„Místo přímo ceny můžeš opět uvádět slevu v procentech.“ Jen poznámka mimo diskusi kolem technického řešení: Uživatel se nejlépe bude orientovat, když bude mít všechny informace – základní cena, sleva, výsledná cena. Další možné řešení by bylo uvádět pouze výslednou cenu. Uvádět pouze slevu, aby si výslednou cenu musel uživatel sám spočítat, to by myslím byla z obchodního hlediska strategická a psychologická chyba. |
||
joe Profil |
#6 · Zasláno: 4. 10. 2011, 12:30:47
Petr ZZZ:
joe: „Místo přímo ceny můžeš opět uvádět slevu v procentech“ Tím jsem myslel v databázi, ne na webu :) tam bych naopak zobrazoval ty nejnižší ceny (tedy cena od). |
||
Novic Profil * |
#7 · Zasláno: 4. 10. 2011, 12:38:12
Kluci odbíháte od tématu. Berte to, že je potřeba zobrazit jakoukoliv cenu (slevu).
|
||
Časová prodleva: 13 let
|
0