[php/mysql] probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RiCk
  • Registratie: Augustus 2000
  • Laatst online: 10:55
Ik wist niet echt een geschikte titel voor dit probleem, vandaar de lame-ass topic titel :P

Ik zit met het volgende:

Op een site werk ik met levels, groepen en subgroepen.
Bij een level wordt aangegeven tot welke groepen en subgroepen dat level toegang heeft.
Als er toegang wordt gegeven tot een subgroep, dan moet er automatisch toegang worden gegeven tot alle groepen (hoofdgroepen) daarboven.

De groepen tabel ziet er zo uit:

id,naam,groepvan
id en naam spreken voor zich, groepvan is het id van de hoofdgroep waar de groep in zit als het een subgroep is

Als ik dus de volgende groep met subgroepen heb:

Internet:
- HTML
- Flash

En onder HTML:
- Voorbeelden
- Leren

Dan wil ik dat als ik een level toegang geef tot 'Leren', het level ook toegang krijgt tot HTML EN internet.

Op dit moment heb ik een check gemaakt bij het updaten van een level dat als het veld 'groepvan' van een subgroep waar ik toegang tot geef niet gelijk is aan 0, hij die groep ook toevoegd (dat is dus de hoofdgroep van die subgroep).
Het probleem is alleen dat ik op dat moment dus niet kan zien tot hoe diep het gaat, hij moet dan namelijk ook nog toegang geven tot Internet.
Ik kan wel handmatig tot een bepaalde diepte gaan toevoegen, maar ik weet niet tot hoe diep er later subgroepen worden toegevoegd door mijn klant.

Ik hoop dat jullie het probleem begrijpen, weet iemand hier misschien een oplossing voor?

Edit:
ik geef trouwens toegang tot de groepen met een koppeling tabel waar levelid aan groepid wordt gekoppeld.

[ Voor 5% gewijzigd door RiCk op 10-12-2002 11:21 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Opzich is dit iets wat je prima met een recursieve functie op kan lossen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
//Geef toegang
function toegang($groep, $level)
{
    if($groep != 0)
    {
          // Code voor de insert
         // Code om parent op te zoeken
         toegang($groeps_parent, $level);
    }
    // Eventueel nog een else met wat leuke dingen
}


Waarmee het dus niet uitmaakt hoe diep je boom is, met diepe bomen wordt het wel relatief traag, maar echt betere oplossingen voor mysql zijn er niet denk ik.

[ Voor 19% gewijzigd door ACM op 10-12-2002 11:26 ]


Acties:
  • 0 Henk 'm!

  • RiCk
  • Registratie: Augustus 2000
  • Laatst online: 10:55
Dat is inderdaad wel een goeie oplossing, thanks!
Ik zat zelf net te denken aan een textveld met daarin alle hoofdgroepen van een bepaalde subgroep, en als ik dan een subgroep zou toevoegen, dat tekstveld pakken van de hoofdgroep, daar die hoofdgroep aan toevoegen, etc :)

Maar dit is idd een betere. Ik ga er eens mee aan de slag.