ik sta weer voor 'n grote uitdaging. Ik ben op zoek hoe ik voor elkaar moet krijgen hoe ik rol-mdw matrix kan maken.
geen flauw idee hoe ik dit moet aanpakken en alle hulp is meer dan welkom.. Op voorhand bedankt voor het meedenken.
Wat ik heb is tabel met medewekers een tabel met rollen en er bestaat een koppeltabel die een relatie tussen die twee heeft. Wellicht is dat de enige tabel om de kruisjes hieronder te zetten en dat de andere twee middels een JOIN evt extra info kan toevoegen....
Rol1 Rol2 Rol3
Mdw1 x x x
Mdw2 x x
Mdw3 x
Mdw4 x
Mdw5 x x
Hoe moet ik dit aan vliegen? Werkelijk geen idee hoe en wat.
Een matrix met verticaal alle rollen, en horizontaal alle medewerkers.
Hiermee heb je al een spec van wat je wilt, rest echter het hoe.
Allereerst heb je alle rollen nodig om alle kolommen op te spannen (1 query).
Vervolgens heb je alle medewerkers nodig met alle bijbehorende rollen (nog 1 query).
Het is waarschijnlijk handig om al de resultaten van deze laatste query vast op te halen en in een array te stoppen zodat je daarna makkelijk de matrix (ik neem aan dat je hiervoor gewoon een HTML-tabel gebruikt?) kunt bouwen.
Dan heb je een dubbele for-loop nodig om alle rijen + kolommen van de tabel te genereren.
Allereerst loop je alle medewerkers af (buitenste for-loop - dit komt elke keer overeen met een tabelrij), en daarna alle rollen (binnenste for-loop - elke rol(positie) een tabelcel/-kolom innemen). Bij elke rol controleer je of deze gebruiker die heeft.
Zoja: zet vinkje, zonee: produceer een lege cel.
Nog zonder een letter te programmeren heb je al helemaal uitgestippeld hoe alles gaat lopen.
Het programmeren zelf is simpelweg uitrollen wat je eerder hebt bedacht.
Dit is het idee van specificeren van wat je gaat doen: het meeste denkwerk is dan al gedaan op het moment dat je code gaat kloppen.
Nota bene: je kunt ook een "proof of concept" / zogenaamde "mockup" maken, nog zonder tussenkomst van een database, die illustreert/"bewijst" wat het zou moeten doen:
bedankt voor je uitgebreide antwoord. Zal komend weekend dit eens rustig op me laten werken en kijken of ik het allemaal kan bevatten. ..
je schetst in je antwoord al precies wat de bedoeling... verticaal de rollen.. horizontaal de medewerker (van gekozen afdeling) en daar waar 'n match is een kruisje of plusje oid. Zodat je in 1 oogopslag kan zien wie welke rol toebedeeld heeft gekregen.
Ik geef toe dat het best complex is. Voor een rechtensysteem heb ik dit pas ook gemaakt.
In dit geval heb ik eerst een array gemaakt die een boom geeft van de bestaande rechten. Puur om de matrix vorm te geven, omdat niet elke module (name)in mijn site alle acties heeft. De rechten zelf zitten in een multidimensionale die ik bij het inladen van de pagina steeds genereer aan de hand van de databasetabellen.
En aan de hand hiervan bouw ik met een foreach de tabel op.
Eerst horizontaal de acties in kolommen, en dan vervolgens de acties in de kolommen.
(Noot: Het is mooier geweest als de de th's (table-heading) bovenaan met de acties ook dynamisch gegenereerd werd.)
eerst avond puzzelen lever rampzalig gevolgen op.... de boel door ini elkaar gezakt ;-) niets werkt meer... maar ff een kopie terugzetten :-)... ik vrees een vreze :-). maar blijven door hannesen
Geduld blijven hebben en doorzetten. Zo heb ik mijn rechtensysteem-matrix ook opgebouwd.
We mogen blij zijn dat we print_r en var_dump hebben om array's en variabelen te debuggen. ;-)