[PHP][MySQL] Selecteren en onderverdelen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo, ik wil graag een rijen groeperen op die uit een tabel komen uit een MySQL database.

Om in het kort een voorbeeld te maken, ik heb een tabel in de MySQL database genaamd 'Vragen', deze tabel bestaad uit vijf kolommen 'ID', 'Hoofdcategorie', 'Ondercategorie', 'Vraag' en 'Antwoord'.

Tot nu toe gebruik ik een pagina met daarop alle 'Hoofdcategoriën', als je daar dan op klikt ga je naar de tweede pagina met de 'Ondercategoriën' en dan kun je weer doorklikken naar alle 'Vragen' die onder de 'Ondercategorie' vallen.

Nu loop ik al een tijdje met het idee rond om alle vragen op een pagina te zetten, ik heb al heel wat dingen geprobeerd maar ik kom er maar niet uit, wat ik wil bereiken is het volgende,

- Hoofdcategorie 1

- - Ondercategorie 1 (in hoofdcategorie 1)

- - - Vraag 1 (in hoofdcategorie 1, ondercategorie 1)

- - - Vraag 2 (in hoofdcategorie 1, ondercategorie 1)

- - Ondercategorie 2 (in hoofdcategorie 1)

- - - Vraag 1 (in hoofdcategorie 1, ondercategorie 2)

- - - Vraag 2 (in hoofdcategorie 1, ondercategorie 2)

- - Ondercategorie 3 (in hoofdcategorie 1)

- - - Vraag 1 (in hoofdcategorie 1, ondercategorie 3)

- Hoofdcategorie 2

- - Ondercategorie 1 (in hoofdcategorie 2)

- - - Vraag 1 (in hoofdcategorie 2, ondercategorie 1)

- - - Vraag 2 (in hoofdcategorie 2, ondercategorie 1)

- - Ondercategorie 2 (in hoofdcategorie 2)

- - - Vraag 1 (in hoofdcategorie 2, ondercategorie 2)

- - - Etc.

- - Etc.

- Etc.

Mijn vraag is nu, moet ik dit bij SELECT doen in m'n query of in PHP zelf, en welke functie kan daarvoor gebruiken en raadplegen in m'n documentatie, mischien weet iemand een tutorial of een helppagina ergens waarmee ik verder kan

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Als een vraag altijd in een subcategorie staat, en een subcategorie altijd in een hoofdcategorie, dan is het vrij makkelijk. Je selecteert gewoon alles, gesorteerd op hoofdcategorie, subcategorie. Daarna kun je in PHP het afdrukken regelen met een simpel loopje en een if statement waarmee je de naam van de subcategorie van het vorige vergelijkt met die van het huidige record.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 18:54
Een selectje met inner joints op de tables vragen & ondercategoriéen en dan met een while loopje kom je een heel eind :)

(het is dus verstandig met 3 tabellen te werken, categorie, subcategorie, vragen...
die geef je allemaal idtjes, die idtjes join je op categorie, en dan met een while loopje spuug je de boel uit)

[ Voor 46% gewijzigd door RedHat op 03-04-2005 22:22 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

RedHat schreef op zondag 03 april 2005 @ 22:21:
(het is dus verstandig met 3 tabellen te werken, categorie, subcategorie, vragen...
die geef je allemaal idtjes, die idtjes join je op categorie, en dan met een while loopje spuug je de boel uit)
Wanneer TS niet meer nodig heeft dan de velden die hij in de topicstart noemde, dan volstaat één tabel net zo goed. Feitelijk gezien zou normaliseren naar 3 tabellen inderdaad beter zijn, maar van twee tabellen met maar één veldje (naast het id) word je ook niet altijd even vrolijk. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

RedHat schreef op zondag 03 april 2005 @ 22:21:
Een selectje met inner joints op de tables vragen & ondercategoriéen en dan met een while loopje kom je een heel eind :)
Zwaar wekend gehad? :P
(het is dus verstandig met 3 tabellen te werken, categorie, subcategorie, vragen...
die geef je allemaal idtjes, die idtjes join je op categorie, en dan met een while loopje spuug je de boel uit)
Maar dit systeem is ook weer peperkt. En je wel echt niet voor elk niveau een aparte tabel creeren. Dan is een parent-child oplossing een stuk eenvoudiger en er is zeer veel infi over te vinden. Alleen moet je oppassen met recursie in PHP want het kan zeer traag worden. Verder zijn er verschillende classes beschikbaar waarmee je ook andere technieken kan toepassen. Een nadeel van parent-child oplossingen is dat dit standaard zeer lastig met SQL te doen is. Zeker bij een grote tree. Maar hiervoor zijn ook andere methoden. Er is in ieder geval genoeg van te vinden op GoT. :)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

Verwijderd

Die categorie- en subcategorie-tabellen kunnen naast een ID ook nog een omschrijving hebben.
En dan kun je bv. heel snel 'Programming & Webscripting' veranderen in 'Devsletten & co'. :)
Pagina: 1