Toon posts:

[PHP/MySQL] Categorieen op veel niveaus

Pagina: 1
Acties:

  • Morti3r
  • Registratie: december 2006
  • Laatst online: 11-09-2011
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

Processor: AMD Athlon 64 3500+ 2,2GHz
Moederbord: Asus A8N-e Nfore-4
Videokaart: Asus 7800GT 256MB
Geheugen: 2x 1.024MB PC3200 Corsair
Hardeschijf: 120GB Western Digital P-ATA


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.

  • 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


  • RobIII
  • Registratie: december 2001
  • Laatst online: 13:17

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

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.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • 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



Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee