Autor | Zpráva | ||
---|---|---|---|
benistr Profil |
#1 · Zasláno: 12. 7. 2011, 22:14:31
Dobrý den mám datábázi kde se články podle ID řadí do kategorií podle id ale v současnosti to jde jen jeden článek jedna kategorie a já bych chtěl aby to byl jeden článek více kategoríí a nevím jak v tabulce databáze dát víc ID kategorií k jednotlivým článkům
tabulka se jmenuje catid a je v ní zapsáno id dané kategorie kde je článek zařazen, třen třeba kategorie 12 a já bych chtěl aby to byla kategorie 12 ale třeaba i 13 a 14 a nevím jak by měl zápis v tabulce databáze catid vypadat. Děkuji moc za radu. |
||
pcmanik Profil |
#2 · Zasláno: 12. 7. 2011, 22:52:29
benistr:
Bolo by dobre vytovrit dalsiu tabulku, v ktorej budu len id kategorii a id clanku. Nasledne z toho vyberat. Viac id kategorii v jednom riadku nieje dobry napad a moze to neskor sposobovat problemy. |
||
benistr Profil |
#3 · Zasláno: 13. 7. 2011, 11:50:32
Asi by to bylo taky řešení, jenže to neumím a určitě by to nebyl zásah jen do databáze když mám nyní v tabulce catid uvedené id článkiu jak tam mám zadat další id aby tam bylyl dvě nebo i více v jakém formátu, momentálně je to číslo třeba 12
|
||
o_O Profil |
#4 · Zasláno: 13. 7. 2011, 12:04:25
benistr:
Právě to řešíme v tématu Dotaz nevypíše vše co má > array. articles:: Články id, nazev, ... 1 | Článek 1 2 | Článek 2 cat:: Kategorie id_clanku, id_kategorie 1 | 2 1 | 1 2 | 2 cat_names:: Kategorie (názvy) nazev, id_kategorie Spam | 2 Otázky | 1 Blbosti| 3 Výsledný dotaz na MySQL by byl například: SELECT id,nazev,group_concat(cn.nazev) AS kategorie FROM articles a LEFT JOIN cat c ON (a.id=c.id_clanku) LEFT JOIN cat_names cn ON (c.id_kategorie=cn.id_kategori) ... GROUP BY a.id Výsledek: id | nazev | kategorie 1 | Článek 1 | Spam,Otázky 2 | Článek 2 | Spam |
||
Ugo Profil * |
#5 · Zasláno: 13. 7. 2011, 12:10:29
ja takovyhle veci delam jednoduse i kdyz neefektivne na rychlost DB. sloupec kategorie u clanku dam jako text (tvar : ",12,13,14," a pak likem hledam ",13," upozornuji ale.. je to lehky na zpracovani, nechava to jeden radek ale .. je to pomaly, mnohem lepsi je ono reseni od o_O, tam se nemusi tolik zdrzovat PHPkem predevsim pri uprave a mazani :)
|
||
benistr Profil |
#6 · Zasláno: 13. 7. 2011, 19:24:31
no chtěl bych to udělat jako Ugo ted je v té tabulce atribut int nebo co to je, na co to mám zněnit abych tam mohl zapsat čísla všech kategorií aby to jeden článek zobrazovalo v několika kategoriích
|
||
benistr Profil |
#7 · Zasláno: 13. 7. 2011, 22:09:02
Vzdávám to tohle prostě neumím, myslel jsem že to bude nějak jednoduché že do řádku kde je napsané číslo kategorie kde se zobrazuje článek prostě napíšu další číslo kategorie a tím bude automaticky ve dvou kategoriích ale asi to nejde
|
||
peta Profil |
#8 · Zasláno: 14. 7. 2011, 08:28:41 · Upravil/a: peta
benistr:
Clanky tabulka 1. Nazvy kategorii, tabulka 2. Prirazeni kategorii k clankum, tabulka 3. To je nejlepsi reseni. Kdyz zvolis innoDB a ne myIsam engine pro tabulky, tak se da nastavit hlidani tabulek vzajemne. cili, kdyz chces smazat kategorii, ve ktere jeste je nejaky clanek, tak te to na to upozorni. Dalsi reseni je nacpat to do jedne tabulky na vic radku clanek_id, kategorie_id, text 1, 1, blabla 1, 2, blabla Ale duplikujes cely radek s dlouhym clankem kvuli pridani dalsi kategorie. Pokud ti to nevadi, pak je to ok. Ale taky mam stejny problem, bohuzel zrovna delam neco jineho, tak jsem tam neuvedl konecne reseni, protoze to zatim nemam :) http://diskuse.jakpsatweb.cz/?action=vthread&forum=28&topic=127275&page=-1 |
||
benistr Profil |
#9 · Zasláno: 14. 7. 2011, 09:39:01
peta:
Takhle to v podstatě je nyní jak to druhé řešení, prostě udělám kopii článku a dám ho do jiné kagegorie ale to nechci, jen nerozumím proč když do do řádku catid přidám další id categorie buď zmizí obě id a napíše se tam nula nebo se po uložení ukáže jen jedno id kategorie a to jen to původní např 12 takže když tam napíšu 12,13 a uložím to je tam potom jen 12 |
||
Časová prodleva: 13 let
|
0