Jag kanske har fel databasstruktur men jag tycker att denna känn lite "roddig". Finns kanske ett smartare sätt?!
Set RecSet = Connect.Execute("SELECT ua_add, ua_addurl FROM user_addons WHERE ua_uid="& uid)
If NOT RecSet.EOF Then
Do while not RecSet.EOF
if color="white" then color="gray" else color="white"
Response.write "<tr class="& color &"><td>"& RecSet(0) &" :</td><td>"
Set RecSet2 = Connect.Execute("SELECT ur_"& RecSet(1) &" FROM user_restrictions WHERE ur_id="& id)
Response.write RecSet2(0)
Response.write "</td></tr>"& vbCrLf
RecSet.movenext
loop
end if
Jaha det var det jag tänkte.
Då kanske inlägget kan flyttas till rätt forum.
Min tanke är att olika medlemmar/administratörer i ett community skall kunna administrera olika "avdelningar". Skulle behöva en liten puff i rätt riktning, tips?
Ex
[b]tabellen användare[/b]
id | namn |
------------------------
1 | Olle |
2 | Pelle |
3 | Jöns |
[b]tabellen rättigheter[/b]
id | avdelning
------------------------
1 | forum
1 | nyhetsbrev
2 | nyheter
3 | medlemmar/rättigheter
(Har man rättigheter att administrera "medlemmar" så skall man även kunna sätta olika rättigheter på andra medlemmar)
Om du utgår från att en användare har en roll så har han den under en viss tidsrymd och den är då förknippad med olika rättigheter.
Ofta glöms tiden dvs from tom ett visst datum. Tänk så i rioller så ordnar det sig.
Om det är felstavatr så beror det på att Rikard beställde in många öl ikväll.
Om man dessutom kompletterar den tredje tabellen med datum intervall från och med till till och med.
Så kan man se när förändringar i rättighetsdelen har förändrats.
Det är viktigt att ta med datum(TS) på transaktionsrättigheter.
Ok, du menar så. Ja det kanske är bra ja.
Men hur skulle man kunna göra en liknande grej som grundinlägget handlade om då?
Alltså, lista alla rättigheter forum, anvädare, nyheter osv
och sedan markera ut vilka rättigheter ex. Olle har?
Du hittar f.ö. nog på bättre namn för tabellerna och kolumnerna. ;)
' Alla rättigheter Olle har
SELECT t2.rättighet
FROM användarättigheter t1, rättigheter t2
WHERE t2.id = t1.rättighet
AND t1.userID = 1 (userid för Olle)
' Lista alla rättigheter
SELECT rättigheter FROM rättigheter
Du hittar f.ö. nog på bättre namn för tabellerna och kolumnerna. ;)
' Alla rättigheter Olle har
SELECT t2.rättighet
FROM användarättigheter t1, rättigheter t2
WHERE t2.id = t1.rättighet
AND t1.userID = 1 (userid för Olle)
' Lista alla rättigheter
SELECT rättigheter FROM rättigheter
Fast tanken var ju att man skulle nästla in det hela så att det blir så här ungefär:
[b]Användarrättigheter för Kajsa:[/b]
Forum | True
Nyheter | False
Nyhetsbrev | True
Medlemmar | False
Omrästning | False
Men det blir ju så egentligen. Säg att du tar fram alla id för rättigheter som Kajsa har och lägger in dem i t.ex. en array.
Den array får då värderna {1, 2, 3, 4} t.ex.
Sedan loopar du igenom alla rättigheter som finns.
För varje loop jämför du om värdet för rättigheten finns i din array. Det är ett enkelt och inte allt för långsamt sätt.
Du skulle även kunna räkna på alla rättigheter och köra en SQL-sats som räknar hur många poster det finns där Kajsa har just den rättigheten. (0 eller 1 alltså)
Den SQL-satsen överlåter jag till LarsG. ;)
Men den borde inte alls vara så avancerad. LEFT OUTER JOIN mellan rättigheter och användarrättigheter ungefär.
Ja, just ja.
Man skulle kunna räkna förekomsten av personens id i tabellen "användarättigheter" och köra en if-sats om siffran är högre än 0.
En annan variant är kanske att ta med en case-sats direkt i sql:en. Men det verkar ju vara hysteriskt svårt att formulera en sådan. Typ:
select id, case when speciellt_id is null then 'False' else 'True' end FROM tbl_rättigheter LEFT JOIN tbl_användarättigheter ON bla. bla. bla.
Men nu så listas det på alla andra sätt än detta.
Och sql:en ser ut så här:
SELECT ua_add,ual_fromdate,ual_todate, case when ual_umid = "& id &" then 'checked' end FROM user_addons LEFT JOIN user_accesslevels ON ual_uaid = ua_id AND ua_uid="& uid &" ORDER BY ua_add
Det är en mycket flexibel design och tillåter att varje användare kan kopplas till en eller flera roller. Varje roll kan ha en eller flera rättigheter. Dessutom kan du lägga till och ta bort rättigheter utan att ändra databasdesignen, vilket är en av de viktigaste egenskaperna. Just nu lägger du bara till en rättighet och tilldelar den till valda roller.
251 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2