Autor Zpráva
benistr
Profil
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
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
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
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 *
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
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
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
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
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

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0