[PHP/MySQL] Categorieen op veel niveaus

Pagina: 1
Acties:
  • 140 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Anoniem: 199538

Topicstarter
Hallo mensen,

Ik ben begonnen aan een website waarmee bestanden voor educatie gedownload kunnen worden.
Er zit een categorie niveau in en dat blijkt nu lastiger dan gedacht:

Het komt er ongeveer zo uit te zien:

Natuurkunde -> Havo -> Hoofdstuk 1 > enz.

De eis is dat het maximaal 5 niveaus aankan.
Dit zou ik natuurlijk in een array vast kunnen leggen, maar ik houd van flexibiliteit en
ik had het idee het in een database tabel vast te leggen:
idparent_categoryname
10Natuurkunde
21Wetten van Newton


Zoals je ziet is het vrij makkelijk om zo categorieen op meerdere niveaus te krijgen.
Want parent_category staat voor het eerste bovenliggende categorie id.

Alleen dan het ophalen?
Hoe geef ik dan antwoord op de vraag: Alle categorieen onder cateogorie 1.
Als daar een stuk of 5 onder liggen zijn die niet zo maar te herleiden.

Met PHP & While loops wordt het er erg moeilijk op vind ik. De logica is dan snel weg.

Met alleen SQL kreeg ik het ook niet voor elkaar, ik zat de denken aan CURSORS en dan FETCH ofzo, maar heb geen idee hoe dit werkt (google levert engelstalige resultaten op met abstracte voorbeelden :( ).

Nu denk ik er over na voor minder flexibiliteit te gaan en alles op te slaan in multidimensionale arrays
Maar dit heeft niet mijn voorkeur.

Weten jullie wat ik het beste kan doen?
Ik zou graag advies willen hebben over een mogelijke oplossing of waar je zelf voor zou gaan.

Ps. ik beschik over PHP5 & MySQL5

Acties:
  • 0 Henk 'm!

Anoniem: 26306

Je zou kunnen kijken naar Modified Preorder Tree Traversal, een manier om extra gegevens over de hierarchie bij te houden, zodat je zaken als "alle categorieën binnen deze categorie" en "alle categorieën waarbinnen deze categorie staat" eenvoudig kunt opvragen. Iets lastiger in het onderhoud, trager in opslag, maar sneller bij het ophalen omdat je dan niet meer te maken hoeft te hebben met recursie.

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Las vandaag toevallig dit artikel. http://dev.mysql.com/tech...es/hierarchical-data.html

Ook over nested set en adjacency list.

Systeem | Garmin Connect


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Brakkie schreef op dinsdag 20 maart 2007 @ 22:39:
Las vandaag toevallig dit artikel. http://dev.mysql.com/tech...es/hierarchical-data.html

Ook over nested set en adjacency list.
Dat is (zo op 't eerste oog) niets anders dan wat Cheatah al postte hoor ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

RobIII schreef op dinsdag 20 maart 2007 @ 22:44:
[...]

Dat is (zo op 't eerste oog) niets anders dan wat Cheatah al postte hoor ;)
Het artikel van Cheatah wordt php er bijbetrokken in het artikel van mysql.com ligt de focus veel meer op de SQL. Vind het persoonlijk een leuker artikel om te lezen.

Systeem | Garmin Connect