Zadejte hledaný výraz...

Potřebuji poradit PHP funkci nebo SQL příkaz

Maijkl22
verified
rating uzivatele
(2 hodnocení)
11. 7. 2014 10:24:35
Dobrý den,
opět řeším jeden problém. V databázi si ukládám údaje k videím. Jeden ze sloupců se jmenuje "kategorie" a má vlastnosti varchar 255. Při vkládání v adminu si zvolím například 3 kategorie, dle kterých si poté mohu na webu listovat. Takže například si zvolím komedie, hd a rodinný. Do DB se mi to uloží jako "komedie,hd,rodinny".
Níže je kod, kterym potom tahám z DB na hlavní stránce (ne v kategorii, ale na hlavní stránce).
Potřebuji si za název videa přidat štítek HD, pokud je dané video v kategorii HD. NA stránce, kde si listuju jen v HD není problém, protože si to dávám rovnou do WHERE kategorie LIKE '%hd%', ale tady je to jine. Video má třeba 3 kategorie. Poradíte mi prosím, jak do výpisu na hlavní stránce přidat štítek HD za název videa, pokud dané video bude v této kategorii?
Děkuji.
--------------------------------------------
Momentálně to mám vyřešené tak, že si při vkládání dat do DB kontroluju, jestli video dávám do kategorie hd. Pokud ano, mám v DB sloupec navíc kde mám buď 1 nebo 0. Ale sloupce navíc znamenají data navíc (a při 10 000 řádků v DB je to mnoho dat) a to není příliž efektní. Vím že to jde napsat v elegantněji a jen v PHP namísto toho, abych musel přidávat další data do DB. Proto váš prosím o rozřešení, abych měl kod lepší. Děkuji :)
11. 7. 2014 10:24:35
https://webtrh.cz/diskuse/potrebuji-poradit-php-funkci-nebo-sql-prikaz#reply1038900
Váš problém spočívá v tom, že si kategorie ukládáte v textovém sloupci.
Normalizujte strukturu databáze - kategorie přesuňte do vlastní tabulky, spojte je se záznamy přes spojovací tabulku.
Je legrační, že se bojíte přidat nový číselný sloupec do tabulky, ale nevadí vám duplikovat názvy kategorií u každého záznamu znovu a znovu.
11. 7. 2014 10:29:36
https://webtrh.cz/diskuse/potrebuji-poradit-php-funkci-nebo-sql-prikaz#reply1038899
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
11. 7. 2014 10:34:09
Tento návrh databáze je nevhodný. Sloupec kategorie z tabulky odstraňte, vytvořte si druhou tabulku, kde budete mít pouze id a názvy kategorií a třetí tabulku, která bude spojovat id videa s id kategorie (nebo u transakční použijte vazbu 1:n). Pak každé video bude možné mít ve více kategoriích současně a odpadne vám zbytečné množství dat (místo varchar 255 budete mít jen int a přenášet se bude menší objem dat).
11. 7. 2014 10:34:09
https://webtrh.cz/diskuse/potrebuji-poradit-php-funkci-nebo-sql-prikaz#reply1038898
Maijkl22
verified
rating uzivatele
(2 hodnocení)
11. 7. 2014 10:38:06
To je pravda, taky mě to už napadlo, ale říkal jsem si, hodně práce. Ale nic jiného mi nezbyde a pustím se do "modernizace" struktury tabulky a vyřeším to, tak jak, radíte. Do budoucna to bude mít určitě užitek.
Ale jen tak pro zajímavost, čistě teoreticky jak by tento můj problém, jak jse popsal výše, šlo řešit? Rád bych to použil než si někde vedle vytvořím novou DB a aktualizuji data? Těch dat je opravdu hrozně moc a při týmu složeného z 5 lidí nám to i tak potrvá hodně dlouho. Takže to použiji jako dočasné řešení.
EDIT:
tento kod je stařičký a v té době, kdy jsem ho psal (cca 3 roky zpět) jsem spojování tabulek ještě příliš neovládal. Dneska je to běžná praxe, takže jde jen o aktualizaci kodu.
11. 7. 2014 10:38:06
https://webtrh.cz/diskuse/potrebuji-poradit-php-funkci-nebo-sql-prikaz#reply1038897
Je úplně jedno, kolik těch dat máte, migrační skript musíte napsat a spustit jen jednou.
A v čem hledáte problém teď? Rozsekáte kategorie na pole podle čárek a podíváte se, jestli je v poli řetězec "hd".
Možná byste si měl nejdřív přečíst manuál a best practices, než se vrhnete na vytváření kola/svého CMS.
Jen v tomto krátkém kódu máte spoustu dalších chyb, od používání knihovny mysql místo mysqli nebo PDO přes míchání PHP a HTML (využijte šablonovací systém), češtiny a angličtiny (používejte angličtinu) až po "SELECT *".
11. 7. 2014 10:44:21
https://webtrh.cz/diskuse/potrebuji-poradit-php-funkci-nebo-sql-prikaz#reply1038896
Maijkl22
verified
rating uzivatele
(2 hodnocení)
11. 7. 2014 11:00:25
Napsal Martin Schlemmer;1105979
Je úplně jedno, kolik těch dat máte, migrační skript musíte napsat a spustit jen jednou.
A v čem hledáte problém teď? Rozsekáte kategorie na pole podle čárek a podíváte se, jestli je v poli řetězec "hd".
Možná byste si měl nejdřív přečíst manuál a best practices, než se vrhnete na vytváření kola/svého CMS.
Jen v tomto krátkém kódu máte spoustu dalších chyb, od používání knihovny mysql místo mysqli nebo PDO přes míchání PHP a HTML (využijte šablonovací systém), češtiny a angličtiny (používejte angličtinu) až po "SELECT *".
Co vám vadí na tom že používám mysql namísto mysqli? To je trochu přehnaná reakce na to, že se dodnes ještě normálně v mysql programuje a stále se pro něj vyvýjí updaty a podpora je obrovská. mysqli je sice o generaci výše a poskytuje mnoho výhod, ale to neznamená že mysql je tímto zabité a špatné.
EDIT: a přepisovat celý projekt? Fůůha, to si při svém profesním vytížení nedokážu představit.
11. 7. 2014 11:00:25
https://webtrh.cz/diskuse/potrebuji-poradit-php-funkci-nebo-sql-prikaz#reply1038895
treba tohle?
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information.
11. 7. 2014 15:58:49
https://webtrh.cz/diskuse/potrebuji-poradit-php-funkci-nebo-sql-prikaz#reply1038894
Kovboj
verified
rating uzivatele
(13 hodnocení)
11. 7. 2014 16:19:41
Myslíš něco takového?
Ale jinak je to fakt celkem prasárna, jestli máš skutečně 10 tisíc záznamů s filmy tak to bude POMALÉ! Vyběr z tabulky stylem like '%neco%' je ten nejpomalejší ze všech.
11. 7. 2014 16:19:41
https://webtrh.cz/diskuse/potrebuji-poradit-php-funkci-nebo-sql-prikaz#reply1038893
Maijkl22
verified
rating uzivatele
(2 hodnocení)
11. 7. 2014 20:26:00
Napsal Re4DeR;1106079
treba tohle?
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information.
O tom jsem ani nevěděl, na druhou stranu mě to netrápí. Wedos nechystá v brzké době nasazovat 5.5. prý dokonce ani v roce 2015. Až ho vydají budou mít 5.5 a 5.4 stejně jako nyní mají 5.4. a 5.3 :) každopádně, nové projekty co dělám od současnosti jsou samozřejmně psané lépe a 90% z nich dělám v nette. Jak jsem se již několikrát zmínil, projekt, kterého se tento můj problém týkal, je starý 2-3 roky a celá předělávka celého webu prostě vyžaduje hrozně moc času, který nemám.
Napsal Kovboj;1106083
Myslíš něco takového?
Ale jinak je to fakt celkem prasárna, jestli máš skutečně 10 tisíc záznamů s filmy tak to bude POMALÉ! Vyběr z tabulky stylem like '%neco%' je ten nejpomalejší ze všech.
Ano, něco takového jsem myslel a děkuji Ti za pomoc. Nakonec jsem opravil tu tabulku a vyřešil to spojováním tabulek.
11. 7. 2014 20:26:00
https://webtrh.cz/diskuse/potrebuji-poradit-php-funkci-nebo-sql-prikaz#reply1038892
Pro odpověď se přihlašte.
Přihlásit