Toon posts:

[mysql][php] tree

Pagina: 1
Acties:

Verwijderd

Topicstarter
kan iemand mij wat tips geven hoe ik het beste categorieen met subcategorieen op kan slaan.

bijv heb een record:
R

en die hoort in de categorie, X en subcategorie Y
dit wil ik opslaan in database.

MAAR, ik wil later de mogelijkheid hebben om onder de subcategorieen nog een subcategorie te creeeren.

Geloof dat de diehards mijn uitleg wel zullen begrijpen :)
de vraag is dus eigenlijk, hoe ga ik dat opslaan in me databaseje? Heeft iemand zoiets al eens gefixed? (vast wel) misschien wat nuttige links naar docuementatie over dit soort oplossingen.

Alvast bedankt

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

Er zijn hier al eens een topics over geweest in het verleden.
heb je al eens geprobeerd te [search=php mysql tree] :?

Stop uploading passwords to Github!


Verwijderd

Topicstarter
hmm ik had wel gezocht, maar op mijn termen kreeg ik niks nuttigs :(
excuse me :o

Verwijderd

idd gewoon zoeken op jou termen :)..

maar trees maken is best irrie :)..

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

ik heb een poosje geleden dezelfde vraag gesteld... Ik vond het antwoord erg goed werkte. Ik pas het momenteel met (veel) succes toe... Ik doel hier op de celco boom...

[topic=368430/1/50]


Als je het niet snapt, post dan gerust een reply...

Localhost, sweet localhost


Verwijderd

Topicstarter
Op dinsdag 05 februari 2002 13:21 schreef kvdveer het volgende:
ik heb een poosje geleden dezelfde vraag gesteld... Ik vond het antwoord erg goed werkte. Ik pas het momenteel met (veel) succes toe... Ik doel hier op de celco boom...

[topic=368430/1/50]


Als je het niet snapt, post dan gerust een reply...
bedankt voor het reageren, ik had hem inderdaad al gevonden.
alleen snap ik nog niet helemaal wat links en rechts voorstellen (ben een beetje dom ;) )

Hoe zou zo'n tabel eruitzien?

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Ik neem aan dat je het idee van een boom wel vat... :P
code:
1
2
3
4
5
      A(1,10)
       /   \
   B(2,7)   C(8,9)
    /  \
D(3,4) E(5,6)

Zoals je in het bovenstaande schema ziet is het linker getal van een 'kind' altijd groter dan het het linker getal van zijn 'ouder'. Idem voor het rechter getal, maar dan precies andersom. De getallen van een kind vallen ALTIJD tussen de twee getallen van de ouders.
De tabel zou er zo uit kunnen zien:
code:
1
2
3
4
5
6
7
8
naam | l | r |
-----+---+---+
A    | 1 | 10|
B    | 2 | 7 |
C    | 3 | 4 |
D    | 8 | 9 |
E    | 5 | 6 |
-----+---+---+

Localhost, sweet localhost


Verwijderd

Topicstarter
Op dinsdag 05 februari 2002 14:23 schreef kvdveer het volgende:
Ik neem aan dat je het idee van een boom wel vat... :P
[/code]
jep die wel.
Maar waar worden die links en rechts op gebaseerd? of kun je daar gewoon zelf wat uit de lucht toveren als het maar tussen links en rechts van de parent ligt
code:
1
2
3
4
5
    A(1,10)
     /   \
   B(2,7)   C(8,9)
    /  \
D(3,4) E(5,6)

hier zie je bij node B 2,7 staan.... 2,9 zou volgens die regel ook kloppen, maar bij node C staat rechts ook al op 9.
Maakt dat uit?

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Voortbordurend op mijn vorige post:

Om een boom op de bouwen loop je iedere tak tweemaal langs, een keer heen, en een keer terug. Op de heenweg nummer je links, op de terugweg nummer je rechts.
In het voorbeeld zou je route zijn:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
A.links (1)
  B.links (2)
    d.links (3)
    D heeft geen kindertjes meer...
    d.rechts (4)
    e.links (5)
    e heeft geen kindertjes meer...
    e.rechts (6)
    B heeft geen kindertjes meer...
  B.rechts (7)
  C.links (8)
    C heeft geen kindertjes meer...
  C.rechts (9)
  A heeft geen kindertjes meer...
A.rechts (10)

Als je nou alle parents wil hebben van een kind, selecteer je alle nodes waarvan links kleiner is dan die van het gekozen kind, en rechts groter.
Voor alle kinderen geldt dat precies andersom.

Om een node in te voegen moet je eerst ruimte hebben. Dat kun je maken door bij alle linkse en rechtse waarden die groter zijn dan x 2 op te tellen. (2 is een voorbeeldwaarde, grotere waarden kunnen ook, maar zijn meestal niet zinnig).

Localhost, sweet localhost


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Op dinsdag 05 februari 2002 14:30 schreef woeitje het volgende:
[snip]

hier zie je bij node B 2,7 staan.... 2,9 zou volgens die regel ook kloppen, maar bij node C staat rechts ook al op 9.
Maakt dat uit?
Ja. Iedere waarde mag slechts eenmaal voorkomen.
Ik ben vergeten te zeggen: beide waarden de rechterbuur zijn altijd groter dan de waarden van de 'huidige node', voor de linker buur zijn de waarden altijd kleiner.

maar de volgende boom is even geldig: (minder leesbaar, maar lezen doe je toch alleen maar tijdens het bouwen).
code:
1
2
3
4
5
      A(1,82)
       /   \
   B(4,27) C(34,62)
    /  \
D(5,7) E(11,16)

edit:

Bovenstaande boom is echt in gebruik. Ik heb de namen veranderd, en de meeste kinderen van C en A weggelaten, maar de boom werkt even goed.


Als je een echte massochist bent, kun je zelfs floating point waarden gebruiken!

Localhost, sweet localhost


Verwijderd

Topicstarter
oke bedankt denk dat ik nu wel aardig wat uitleg heb gehad om eens flink mee te stoeien.
Als ik er niet meer uitkomt post ik wel weer :)
Pagina: 1