Toon posts:

oneindig aantal ((sub)sub)catogoriën

Pagina: 1
Acties:
  • 39 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik wil zeg maar dit krijgen

code:
1
2
3
4
5
6
7
8
+ catogorie a 
.+ subcatogorie b 
.|+ item c 
.|+ item d 
.|+ subcatogorie e 
.||+ item f 
.+ subcatogorie g 
.|+ item h


dus flat gezien vanuit de items heb ik:
a > b > c
a > b > d
a > b > e > f
a > b > g > h

Dit kan nog veel uitgebreider, het moet dus oneindig door kunnen gaan. Ik dacht dit zo te doen in mysql:

code:
1
2
3
4
5
6
7
8
9
10
TABEL: CATOGORIE 
+----+--+--------+ 
|NAAM|ID|MASTERID| 
+----+--+--------+ 
|a...|1.|NULL....| 
+----+--+--------+ 
|b...|2.|1.......| 
+----+--+--------+ 
|e...|3.|2.......| 
+ etcetera....


code:
1
2
3
4
5
6
TABEL: ITEMS 
+----+--+-----+ 
|NAAM|ID|CATID| 
+----+--+-----+ 
|c...|1.|2....| //waarom 2? Hij moet in cat b (dus met id 2) 
etcetera


Hoe kan ik met zo min mogelijk mysql querys deze gegevens ophalen en netjes met <UL><LI></LI></UL> etcetera weergeven? Ik dacht zelf met joins maar ik heb niet de kennis om dit te doen. Is er iemand die me kan helpen?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

Gewoon alle categoriën ophalen met één enkelvoudige query als deze:
SQL:
1
SELECT * FROM CATEGORIE

Dan met de taal die je gebruikt (PHP? had je wel eens aan mogen geven in je topicstart) sorteren met een recursieve functie en na afloop weergeven.

Bovendien lopen hier heel veel topics over in dit forum. Heb je wel gezocht?

'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.


  • tofus
  • Registratie: Januari 2002
  • Laatst online: 13-05-2014

tofus

it's all in the game

[half slapend]

ik zou voor een struktuur kiezen in de vorm van:

table tree
===============
id: integer (=unieke key)
node: varchar (=omschrijving van de node)
top: integer (=verwijzing naar id (key) van hoger liggende tak/node (parent))

Voeg dan 1 node toe (de root):

id: 0
node: root
top: 0

vervolgens kun je aan deze root 'takken' hangen, bijv.:

id: 1
node: branch a
top: 0

id: 2
node: subbranch a
top: 1

id: 3
node: branch b
top: 0

wat dan zoiets oplevert als:

+root (0)
|
+--+ branch a (1)
| |
| + subbranch a (2)
|
+--+ branch b (3)

Dit kun je in principe tot in het oneindige uitbreiden, terwijl je je mysql struktuur heel simpel kan houden.

[/half slapend]

[ Voor 7% gewijzigd door tofus op 10-08-2004 03:00 ]

"Whoever undertakes to set himself up as judge in the field of truth and knowledge is shipwrecked by the laughter of the Gods." - Albert Einstein


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

tofus schreef op 10 augustus 2004 @ 02:56:
[half slapend]

ik zou voor een struktuur kiezen in de vorm van:

//snip

Dit kun je in principe tot in het oneindige uitbreiden, terwijl je je mysql struktuur heel simpel kan houden.

[/half slapend]
Als je goed kijkt zie je dat ie die structuur al gebruikt. :)

'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.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
tofus schreef op 10 augustus 2004 @ 02:56:
[half slapend]
<heel verhaal>
[/half slapend]
Wakker worden! ;)
Dat is precies wat webfreaky in zijn topicstart zegt...

Wellicht dat dit wel interessant is voor de TS:
Joe Celko's nested trees
http://www.intelligentent...o.jhtml?_requestid=237214
http://www.sqlteam.com/item.asp?ItemID=8866
http://www.sitepoint.com/article/1105
http://www.evolt.org/arti...l_data/17/4047/index.html
http://www.strath.ac.uk/IT/Docs/Ccourse/subsection3_9_5.html
http://www.sql-server-per...m/topic.asp?TOPIC_ID=1168

En last but not least:
GoT Search

enzovoorts...

[ Voor 19% gewijzigd door RobIII op 10-08-2004 03:09 ]

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


  • tofus
  • Registratie: Januari 2002
  • Laatst online: 13-05-2014

tofus

it's all in the game

[nog slaperiger dan daarnet]
hmm...ok, maar hij gebruikt twee tabellen ;p

tip aan webfreaky:

gooi alles in 1 tabel, en maak onderscheid tussen categorieen en items door gebruik te maken van een atribuut-veld. Dat levert een simpelere query op, omdat je niet in twee tabellen tegelijk hoeft te rotzooien.

Wat je SQL query dan moet gaan worden om alles netjes uit de database te trekken, in een werkbare volgorde, laat ik aan je eigen fantasie over.
[/nog slaperiger dan daarnet]

"Whoever undertakes to set himself up as judge in the field of truth and knowledge is shipwrecked by the laughter of the Gods." - Albert Einstein


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14:36

gorgi_19

Kruimeltjes zijn weer op :9

Zie RobIII :) Recursieve functies / tree's is wat je hiervoor nodig hebt :) Ik denk dat de discussie zich grotendeels herhaald zoals vorige keer, dus vandaar dat ik deze dicht doe. :)

Echter, ik denk dat je met die informatie er wel uit moet komen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.