Zadejte hledaný výraz...

Vypsání výskytu produktu v kategoriích

Adam Žurek
verified
rating uzivatele
(5 hodnocení)
10. 8. 2012 14:45:44
Zdravim,
nevěděl by někdo jakým způsobem v MySQL(případně i PHP) udělat výpis kategorií ve kterých se daný produkt nachází? Ještě k tomu stránkování...
Hodím sem ukázku:
Univerzální díly-> autoskla-> Senzory a příslušenství
Vše pro dílnu-> Nářadí-> Speciální nářadí a přípravky-> Opravy autoskel-> Nářadí a přípravky
jak vidíte, každý řádek má různý počet kategorií - v tom vidím problém
zatím dokážu vypsat výskyt, kde je stejný počet kategorií na každém řádku, ale s tímhle si nevím rady :(
Děkuji za jakoukoliv pomoc
10. 8. 2012 14:45:44
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794908
Jakým způsobem ukládáte hierarchii kategorií?
Ideálně pošlete strukturu tabulek.
10. 8. 2012 14:47:55
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794907
Adam Žurek
verified
rating uzivatele
(5 hodnocení)
10. 8. 2012 14:52:40
category: category_id, depth, parent_id
pak ještě category_description a product_description, ale to asi brzo vyhodim pryč a spojit do do jedné tabulky (category+description a do jedné product+description)
product_to_category: product_id, category_id (takže pro produkt nahoře tam bude 8 řádků)
strukturu je možné změnit pokud by byla nějaká lepší :)
10. 8. 2012 14:52:40
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794906
Skript, kterym zobrazujes cestu kategorii mas, takze vis i jake obsahuje produkty... bohuzel musis projit komplet vsechny kategorie, coz muze byt casove narocne. Proto bych si vysledky ulozil do dalsi tabulky, ze ktere bych je pak bleskove nacital (misto prochazeni). Po pridani/uprave produktu, bys jen tabulku s vysledky zaktualizoval.
Nejaky priklad s vice podkategoriemi najdes treba tu:
http://owebu.bloger.cz/PHP-HTML/PHP-rekurze-jak-vyresit-kategorie-a-podkategorie
10. 8. 2012 19:13:42
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794905
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
10. 8. 2012 20:30:45
#CZechBoY
nevím jak jsi zdatný v mysql a php, ale tohle je asi nejlepší řešení kategorií. je to kompletní správa kategorií. tedy i to co hledáš.
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
---------- Příspěvek doplněn 10.08.2012 v 20:39 ----------
ještě ti mohu dát generování kategorií u eshopů co nám běží na pgsql, ale budeš si to muset nějak přepsat do mysql ;o)
10. 8. 2012 20:30:45
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794904
Adam Žurek
verified
rating uzivatele
(5 hodnocení)
10. 8. 2012 22:01:57
vypsat všechny kategorie umim taky, ale potřebuju udělat to stránkování - problém s dynamickou velikostí stromu
počítejte prosím s tím, že mám 500k kategorií a asi 200M product_to_category
---------- Příspěvek doplněn 10.08.2012 v 22:03 ----------
Napsal Bedříšek;830137
#CZechBoY
nevím jak jsi zdatný v mysql a php, ale tohle je asi nejlepší řešení kategorií. je to kompletní správa kategorií. tedy i to co hledáš.
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
---------- Příspěvek doplněn 10.08.2012 v 20:39 ----------
ještě ti mohu dát generování kategorií u eshopů co nám běží na pgsql, ale budeš si to muset nějak přepsat do mysql ;o)
to bude asi hodně pomalý pro 1000 stránek po 30 stromech :-/
10. 8. 2012 22:01:57
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794903
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
10. 8. 2012 22:10:32
tomu nerozumím. přeci to nebudeš zobrazovat všechno naráz resp. ani generovat to nebudeš všechno.
pokud myslíš, že i přes indexy by to druhé (pgsql kod) bylo pro tvé účely pomalé, zkus to první co jsem posílal. to je opravdu robustní.
10. 8. 2012 22:10:32
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794902
Adam Žurek
verified
rating uzivatele
(5 hodnocení)
10. 8. 2012 22:15:20
no, já nechci zobrazit jednu kategorii za druhou, ale chci zobrazit strom za stromem jakoby (30 stromů na jednu stránku)
chci zobrazit stránkování, takže potřebuju vědět kolik je stromů celkem že
chápeme se navzájem?
10. 8. 2012 22:15:20
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794901
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
10. 8. 2012 22:27:59
teď už asi jo, ale jediná možnost je to spočítat a půjde to vyřešit tím co jsem posílal http://mikehillyer.com/articles/mana...data-in-mysql/
podívej se na obrázek z uvedeného odkazu. v db má kategorie vedené informace o sousedících kategoriích. ta která má rozdíl mezi pravým a levým sousedem 1, tak je koncová.
EDIT: tedy pak stačí udělat select jen nad těma, který mají rozdíl 1 a podělit to 30 a vyjde ti počet stran.
---------- Příspěvek doplněn 10.08.2012 v 22:29 ----------
mimochodem pokud to pochopíš a přejdeš na to, tak zjistíš, jak je to jednoduché. my tom máme v pgsql na nové verzi shopu
10. 8. 2012 22:27:59
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794900
Adam Žurek
verified
rating uzivatele
(5 hodnocení)
10. 8. 2012 22:45:29
tohle traverzování kolem stromu moc nechápu, ale stejně si myslím že to neřeší můj problém
tak já to teda zopakuji:
mám nějakej díl (pumpička, držák, spoiler, motor, olej, volant, ..), ten je zařazený v několika kategoriích (Vše pro dílnu->kompresory->ruční; Pro auto->kompresory->ruční; Užitečná věc->na auto->na kola->na pneumatiky->bezdušové->pumpička; ...)
a já potřebuji zobrazit vždy ten celý strom (..->..->..) - to se počítá jako jeden řádek, já chci mít na stránce 30 těhle stromů a chci mít také stránkování
kdyby tyhle stromy měly pevnou délku tak je to jednoduché, bohužel jeden má třeba 4 kategorie a druhej třeba 10
chápete?
10. 8. 2012 22:45:29
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794899
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
10. 8. 2012 23:01:39
já myslím, že to chápu ;o) prostě jeden produkt může být např. v 31 kategoriích, které jsou zanořené v různých úrovních. a právě proto, že je to ve 31 kategoriích, potřebuješ na tu jednu kategorii druhou stránku. Jednotlivé kategorie pak zobrazuješ včetně celé cesty po root kategorii.
pokud jsem to skutečně pochopil správně, tak platí co jsem uvedl v minulém příspěvku. teda pokud jsou produkty zařazeny v poslední úrovni kategorií.
---------- Příspěvek doplněn 10.08.2012 v 23:07 ----------
co to tady vlastně řešíme. vždyť máš počet kategorií v kterých je to zařazeno v product_to_category. když tento počet seřadíš podle category_id ASC, tak na první stranu generuješ 1-30 kategorií a na to bude stačit i ta moje funkce.
10. 8. 2012 23:01:39
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794898
Adam Žurek
verified
rating uzivatele
(5 hodnocení)
10. 8. 2012 23:34:10
já nepotřebuju 30 kategorií, ale 30 stromů (náhradní díly->audi->a4->motor; univerzální díly->kleště->kovový; ...)
ještě si asi stále nerozumíme :(
strom se skládá z kategorií (z category, category_description)
Kategorie je: Náhradní díly, další je AUDI, další A4, další MOTOR
chápeme se už?
10. 8. 2012 23:34:10
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794897
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
10. 8. 2012 23:57:18
Napsal CZechBoY;830180
já nepotřebuju 30 kategorií, ale 30 stromů (náhradní díly->audi->a4->motor; univerzální díly->kleště->kovový; ...)
ještě si asi stále nerozumíme :(
strom se skládá z kategorií (z category, category_description)
Kategorie je: Náhradní díly, další je AUDI, další A4, další MOTOR
chápeme se už?
já myslím, že jo viz. "Jednotlivé kategorie pak zobrazuješ včetně celé cesty po root kategorii" a stále platí to co jsem psal jako úplně první příspěvek ;o)))
---------- Příspěvek doplněn 11.08.2012 v 00:00 ----------
prostě k vytvoření stromů potřebuješ znát seznam ID kategorií. to najdeš v product_to_category. jak budeš mít seznam ID kategorií, tak pro první stranu vygeneruješ ty stromy. a to jde udělat funkcí, kterou jsem poslal.
10. 8. 2012 23:57:18
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794896
Adam Žurek
verified
rating uzivatele
(5 hodnocení)
11. 8. 2012 00:02:20
takže počítáš s tím, že těch stromů se zobrazí na jedné stránce stránkování více jo?
jak teda zjistím kolik těch stromů tam je celkem(pro daný produkt)?
11. 8. 2012 00:02:20
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794895
Petr Zachrdla
verified
rating uzivatele
(1 hodnocení)
11. 8. 2012 00:08:24
Napsal CZechBoY;830189
takže počítáš s tím, že těch stromů se zobrazí na jedné stránce stránkování více jo?
jak teda zjistím kolik těch stromů tam je celkem(pro daný produkt)?
SELECT count(category_id) FROM product_to_category WHERE product_id = 123
product_id je ID produktu, ke kterému chceš najít počet kategorií v kterých je zařazen. počet kategorií je současně počet stromů.
potom vygeneruješ pro prvních 30 ID
SELECT category_id FROM product_to_category WHERE product_id = 123 ORDER BY category_id ASC LIMIT 30
A z tohoto SELECTu vygeneruješ cestu (strom) ke každé kategorii ve které je produkt 123.
Funkci si bohužel musíš přeložit do mysql.
11. 8. 2012 00:08:24
https://webtrh.cz/diskuse/vypsani-vyskytu-produktu-v-kategoriich/#reply794894
Pro odpověď se přihlašte.
Přihlásit