Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

First en last node defineren in nested set

Pagina: 1
Acties:

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Ik ben bezig met een nested set waarmee ik een categorieën structuur kan opzetten alleen nu kom ik op de backend bij het volgende probleem waar ik op vast blijf zitten. Ik kan de gehele structuur + diepte + parent ID's uitlezen (prachtig met 1 query). Ik heb het vanmiddag voor mekaar gekregen dat ik nodes verticaal kan verplaatsen, maar in de layout wil ik het als volgt hebben:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
2 ( down  )     
    2.1 ( down ) 
    2.2 ( up - down ) 
        2.2.1 ( ) 
    2.3 ( up - down ) 
    2.4 ( up - down ) 
        2.4.1 ( ) 
    2.5 ( up - down ) 
    2.6 ( up ) 
        2.6.1 ( ) 
1 ( up ) 
    1.1 ( down ) 
    1.2 ( up )
Afbeeldingslocatie: http://rotzooi.pakspul.nl/nested-set.png



Bijvoorbeeld bij 2.1, deze is de bovenste node in zijn set en daar wil ik de knop voor 'move up' weg hebben en bij de onderste de 'move down'. En een enige kind die geen van beide knoppen mag hebben aangezien dit geen nut heeft.

Nu kan ik alleen geen methode vinder hoe ik dit kan realiseren. Ik heb naast de layout oplossing de gegevens neergezet die in de database staan, want ik heb het idee dat ik iets met de cijfers kan doen. Ik zie er alleen geen logica in om dit te realiseren. Kan iemand hier mij, van mij part in pseudo code, hier mee helpen :?

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Je wilt een list met een move up en move down knop, alleen wanneer er een element boven of onder is?

Is het een web-applicatie of desktop? PHP/ASP/Winforms? Kan je uitleggen hoe je op dit moment al je nodes op het scherm laat zien?

Freelance Unity3D developer


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Er zal toch ergens opgeslagen moeten zijn in welke volgorde de nodes staan, dus dat opvragen en aan de hand daarvan een knop wel/niet plaatsen klinkt mij een beetje triviaal in de oren.

Denk nog eens even goed na, en post anders eens wat voorbeeld code :).

~ Mijn prog blog!


  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Laatste: rgt + 1 == parent.rgt
Eerste: lft - 1 == parent.lft

Gemakkelijkst te zien door de boomstructuur uit te tekenen en daar de lft/rgt bij te zetten. Als je geen idee hebt hoe deze boomstructuur werkt... dan moet je dat vooral ook doen. Anders blijf je met dit soort vragen klooien.

[ Voor 65% gewijzigd door ValHallASW op 09-07-2010 12:43 ]


  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Wat is een rgt dan? En lft?

Freelance Unity3D developer


  • Nvidiot
  • Registratie: Mei 2003
  • Laatst online: 03-06 16:38

Nvidiot

notepad!

Node heeft een P en een Q.
Subnodes hebben ook een P en een Q, liggend tussen P en Q van de node daarboven. Sorteren op P (of Q) levert een volgorde op.
code:
1
2
3
4
5
6
7
8
P  parent  Q
1          6

P subnode Q
2         3

P subnode Q
4         5

What a caterpillar calls the end, the rest of the world calls a butterfly. (Lao-Tze)


  • Marientjuh
  • Registratie: Oktober 2004
  • Laatst online: 28-11 13:16

Marientjuh

Fullstack developer

Ik gok right en left :)

Dus rechts + 1 == parent.rechts

Respect begint waar eigen kunnen ophoudt! - Kinderkleding webshop van vrouwlief: coz-adore.nl


  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
Waarbij P==lft (left), Q==rgt (right). Zie z'n tabelspecificatie.

Plaatje:
Afbeeldingslocatie: http://sitepointstatic.com/graphics/sitepoint_numbering.gif bron

Item 'food' heeft lft=1, rgt=18. De eerste entry op het tweede niveau ('fruit') heeft lft=1+1=2. De laatste entry op het tweede niveau ('meat') heeft right=18-1=17.

[ Voor 3% gewijzigd door ValHallASW op 09-07-2010 15:08 ]

Pagina: 1