Meerdere categorieën
Hoi,
Ik ben momenteel bezig met een CMS en hierin kunnen artikelen worden aangemaakt die vervolgens in een bepaalde categorie geplaatst worden. Nu heb ik het zo gemaakt dat een artikel maar in één categorie kan, maar het lijkt me eigenlijk mooier om te maken dat een artikel in meerdere categorieën komt te staan.
Het hele systeem met PHP en HTML gaat me wel lukken, maar ik loop vast op het gedeelte waarin er categorieën geselecteerd moeten worden.
Ik heb dan de volgende tabellen met daarin de volgende waardes:
artikelen
---------
naam
cats
categorien
----------
id
naam
In het veld 'cats' van artikelen staat dan bijvoorbeeld 1,2,3 en die cijfers zouden moeten matchen op het ID van categorieën. Dat ik dus bijvoorbeeld als output terugkrijg Nieuws, Kleuren, Voorbeeld.
Lastig verhaal, maar ik hoop dat het een beetje duidelijk is.
Alvast bedankt.
Ik ben momenteel bezig met een CMS en hierin kunnen artikelen worden aangemaakt die vervolgens in een bepaalde categorie geplaatst worden. Nu heb ik het zo gemaakt dat een artikel maar in één categorie kan, maar het lijkt me eigenlijk mooier om te maken dat een artikel in meerdere categorieën komt te staan.
Het hele systeem met PHP en HTML gaat me wel lukken, maar ik loop vast op het gedeelte waarin er categorieën geselecteerd moeten worden.
Ik heb dan de volgende tabellen met daarin de volgende waardes:
artikelen
---------
naam
cats
categorien
----------
id
naam
In het veld 'cats' van artikelen staat dan bijvoorbeeld 1,2,3 en die cijfers zouden moeten matchen op het ID van categorieën. Dat ik dus bijvoorbeeld als output terugkrijg Nieuws, Kleuren, Voorbeeld.
Lastig verhaal, maar ik hoop dat het een beetje duidelijk is.
Alvast bedankt.
Gesponsorde koppelingen:
SELECT naam FROM artikelen WHERE cats=ID
Dat snap ik. Maar ik wil meerdere categorieën per artikel, zoals in Wordpress bijvoorbeeld.
Dan zul je de tabel om moeten draaien
artikelen
------------
id
naam
categorien
------------
id
naam
art_id
Oh, en ik raad je aan om al je code/tabellen in het engels te doen.
artikelen
------------
id
naam
categorien
------------
id
naam
art_id
Oh, en ik raad je aan om al je code/tabellen in het engels te doen.
Gewijzigd op 20/09/2011 18:49:34 door Jacco Brandt
Ik denk niet dat Wordpress het zo opgelost heeft.
Er moet toch een snippet of functie voor zijn in MySQL of PHP voor zoiets?
Er moet toch een snippet of functie voor zijn in MySQL of PHP voor zoiets?
Wat is er dan mis met die methode?
Kijk, ik wil dat bijvoorbeeld 1,2,3 verandert naar de namen van de categorie, waarvan die getallen verwijzen naar het ID van die categorie.
De mogelijke cats in een varchar en dan met like
je cats veld heeft als waarde 'cat1, cat2, cat3'
je sql zou dan zijn:
Je kan ook nog het veld cats ENUM of sET type geven maar dat heeft wat meer beperkingen.
je cats veld heeft als waarde 'cat1, cat2, cat3'
je sql zou dan zijn:
Je kan ook nog het veld cats ENUM of sET type geven maar dat heeft wat meer beperkingen.
Jacco Brandt op 20/09/2011 18:48:50:
Dan zul je de tabel om moeten draaien
artikelen
------------
id
naam
categorien
------------
id
naam
art_id
Oh, en ik raad je aan om al je code/tabellen in het engels te doen.
artikelen
------------
id
naam
categorien
------------
id
naam
art_id
Oh, en ik raad je aan om al je code/tabellen in het engels te doen.
Dat is fout en wel hierom:
Eén artikel kan meerdere categorieën bevatten.
Eén categorie kan bij meerdere artikelen horen.
Dit is dus typisch een meer-op-meer relatie en dat kun je onmogelijk construeren met slechts 2 tabellen wat altijd een één-op-meer relatie is. Ga maar normaliseren, dan zie je het zelf ook.
artikelen:
- id_artikel (primary key)
- content
categorieen:
- id_categorie (primary key)
- categorie
artikel_categorie:
- id_artikel (foreign key naar artikelen)
- id_categorie (foreign key naar categorieen)
- primary key op de combinatie van id_artikel en id_categorie
@Bartje:
Wat jij doet is ook een optie maar heeft als nadeel dat je een extra tabel creëert.
Waarin één artikel dus meerdere malen voorkomt, hetgeen op zich niet zo erg als je een beperkte catalogus hebt. Ik zou dan nog eerder de categoriën groeperen en daar op selecteren.
Wat jij doet is ook een optie maar heeft als nadeel dat je een extra tabel creëert.
Waarin één artikel dus meerdere malen voorkomt, hetgeen op zich niet zo erg als je een beperkte catalogus hebt. Ik zou dan nog eerder de categoriën groeperen en daar op selecteren.
Bartje Jansen op 21/09/2011 10:34:58:
Dat is fout en wel hierom:
Eén artikel kan meerdere categorieën bevatten.
Eén categorie kan bij meerdere artikelen horen.
Eén artikel kan meerdere categorieën bevatten.
Eén categorie kan bij meerdere artikelen horen.
Dan had ik het verkeerd begrepen. Ik dacht dat hij 1 artikel op meerdere categorien was.
Ger van Steenderen op 21/09/2011 11:45:13:
@Bartje:
Wat jij doet is ook een optie maar heeft als nadeel dat je een extra tabel creëert.
Waarin één artikel dus meerdere malen voorkomt, hetgeen op zich niet zo erg als je een beperkte catalogus hebt. Ik zou dan nog eerder de categoriën groeperen en daar op selecteren.
Wat jij doet is ook een optie maar heeft als nadeel dat je een extra tabel creëert.
Waarin één artikel dus meerdere malen voorkomt, hetgeen op zich niet zo erg als je een beperkte catalogus hebt. Ik zou dan nog eerder de categoriën groeperen en daar op selecteren.
Een extra tabelletje noem je een nadeel? Alsof je een extra druppel water in zee doet, maakt echt geen significant verschil. Dit kun je vervolgens wegstoppen achter een VIEW en jouw queries in de scripts blijven ook lekker eenvoudig.
Wanneer je gaat normaliseren, zul je altijd op dit model uitkomen. En dat werkt al zo sinds de jaren '70 en bewijst dagelijks dat het werkt. Wanneer jij een beter model hebt dan Codd, leg het dan eens uit en laat het eens zien.
Toevoeging op 21/09/2011 15:20:20:
Jacco Brandt op 21/09/2011 14:32:14:
Dan had ik het verkeerd begrepen. Ik dacht dat hij 1 artikel op meerdere categorien was.
Bartje Jansen op 21/09/2011 10:34:58:
Dat is fout en wel hierom:
Eén artikel kan meerdere categorieën bevatten.
Eén categorie kan bij meerdere artikelen horen.
Eén artikel kan meerdere categorieën bevatten.
Eén categorie kan bij meerdere artikelen horen.
Dan had ik het verkeerd begrepen. Ik dacht dat hij 1 artikel op meerdere categorien was.
Klopt, maar hoe groot is de kans dat er slechts 1 artikel wordt aangemaakt? Of dat ieder artikel zijn eigen unieke categorieën heeft?
Gewijzigd op 21/09/2011 15:22:16 door Bartje Jansen



