Hvordan laver jeg en funktion der løber alle checkboxene med navnet "access" igennem og gemmer value i en tabel sammen med user id'et, som hentes ved session("UID")
Har du evt også et bud på hvordan jeg får dem ud igen?
Jeg har en tabel der hedder sites der indeholder alle sider i systemet. Når de skrives ud, så skal dem brugeren har adgang til være checket af. Kan man evt gøre det ved at smide de sider brugeren må ændre op i et array, og så holle det op mod recordsættet med alle siderne??
Det er mange måder at gøre dette på - men den allere nemmeste vil nok være at sætte ind en variabel på alle sider (hvis du har flere sider) hvor id'en fra databasen ligger. når en bruger requester denne side, så spørger du først databasen om han har tilgang til siden. hvis ikke, så redirecter du ham til en anden side.
hvis det er den samme side der skriver ud alle dine sider, så bør det jo ikke være det store problem. Da har du vel side id'et i din URL ? så kan du jo bare spørge om brugeren har adgang til siden eller ikke ...
Jeg tor du misforstår mig lidt. Jeg mener i administrationsmodulet. Når man går ind under den enkelte bruger skal man se alle sider i systemet som checkboxe, og de sider brugeren i forvejen har adgang til skal være hakket af.
det var et rigtig godt eksempel, og det er helt sikkert på den måde jeg skal få dem ud:
Jeg har prøvet at omskrive koden så jeg tror den passer til min kode, men jeg får ingen checkboxe på min side. Kan du se om jeg har fået det rettet rigtig til??
Der er også et sted hvor jeg har skrevet --------------** Title udskrives her **---------, jeg vidste ikke hvilken plads jeg skulle sætte ind fra arrayert for at få titlen ud, har du et bud?
<% ' Bygger SQL'er strSitesSQL = "SELECT id, title FROM Sites ORDER BY title;" strUsersSQL = "SELECT id, Name FROM users;"
Set SiteRS = Conn.Execute(strSitesSQL) Set UsersRS = Conn.Execute(strUsersSQL)
if(not UsersRS.EOF) then arrUsers = UsersRS.getRows() end if if(not SiteRS.EOF) then arrSites = SiteRS.getRows() end if
UsersRS.Close Set UsersRS = Nothing
SiteRS.Close Set SiteRS = Nothing
Response.Write("<tr>")
strUsersSitesSQL = "SELECT userID, siteID FROM UserSite WHERE " for j = 0 To UBound(arrUsers, 2) strChecked = "" Set UsersMenuRS = Conn.Execute(strUsersSitesSQL & "userID = " & arrUsers( 0, j ) & " AND SiteID = " & arrSites(0, i) ) if(Not UsersMenuRS.EOF) Then strChecked = " checked=""checked""" end if Response.write("<td width=""200"">------** Title udskrives her ** --------</td>") Response.Write("<td><input type=""checkbox"" name=""access"" value=""" & arrUsers( 0, i ) & """" & strChecked & "></td>") next Response.Write("</tr>") %>
hmm .. der du har rettet nu, er jo der hvor alle brugere bliver skrevet ud. Brugerne bliver skrevet ud i den allere første loop, derefter bliver menupunkterne skrevet ud i den næste loop
ah... undskyld ... du har rettet rimelig mye i scriptet, kan jeg se.
jeg ville råde dig til at hente scriptet ned og få det til at køre som "as is" inden du begynder at rette i det (basen kan du hente på http://xperimentum.com/xperten/482121/db.mdb). når du har fået det til at køre, så ændrer du sql'erne og referencen til databasen. på denne måde så se du hele tiden hvornår det går noget galt. hvis du ændrer alt på en gang, så er det rimelig uoverskueligt at finde de fejl der er lavet.
Nu har jeg siddet og brugt et par timer på at omskrive dit script, men uden held. Du bruger også dobbelt array, og jeg har jo kun brug for enkelt dim array, da jeg kun har en bruger.
Jeg har lige oprettet et spg med lidt tekst, så der evt er andre der kan give en hånd med, og så du kan få lidt ekstra point for scriptet og din hjælp :-)
hmm ... faktisk, så er det eneste du har behov for at ændre, i mit script, for at det skal kun gælde for én bruger, er at denne linie:
Dim strUsersSQL : strUsersSQL = "SELECT id, userName FROM users"
bliver til:
Dim strUsersSQL : strUsersSQL = "SELECT id, userName FROM users where id = 2"
(hvor '2' skiftes ud med en bruger id)
jeg beklager også en lille smule. denne version jeg har vist dig, indeholder en lille bug. jeg rettet den for den bruger, der ville have dette system, i udgangspunktet, men jeg glemte så at rette det i koden, jeg har henvist til.
problemet ligger i linie 85 i den originale kode - denne linie:
det kan godt være at du "kun har brug for enkelt din array", men sådan som dette system er lavet, så kan du ikke have en array med kun én dimension. hvis du kun har behov for at lave denne side, så den kun gælder for én bruger (hvilket jo kun skaber mere arbejde når man skal gentage den samme operation for alle brugere ... tænk så meget mere hurtig adgang til sider kan gives, når du gør det for alle brugere på én gang ;o] ), så har du ikke engang behov for at lægge brugerne ind i en array - så behøver du jo strengt taget ikke engang at hente info om brugeren.
hvad er pointet med at opprette 2 spørgsmål der omhandler det samme ??? Dette er faktisk ikke engang lov. Og specielt ikke "så jeg kan få lidt ekstra points". det er ikke lov at give mere end 200 for et spm, og dette kan overhovedet ikke ses som andet end det samme som det oprindelige spm. Desuden ... hvis jeg får min bil repareret i ett værksted, så går jeg ikke til et andet værksted for at brokke mig eller for at få udbedret fejl. Jeg går til det samme værksted som oprindelig lavet mit arbejde. Det er meget få brugere, der gider at sætte sig ind i den kode jeg har lavet, for at prøve at fixe den. ( det kan godt være det er mange der vil kigge koden igennem, og sikkert mange der ville have hjulpet, men når du skriver "nute har givet mig denne kode", så er det nok mange der vælger at lade min kode være min kode og hurtig kigge på næste spm i oversigten.
Jeg ved godt at spørgsmålet kan diskuteres, men det er faktisk spg nr to du er ved at svare på, og derfor syesn jeg det var rimeligt at du kunne få point for begge dine svar. Du svarede jo præcist og godt på mit færste spg 31/03-2004 16:46:00. Selvom du mener det er det samme spg, så bliver der ikke problemer med pointne, for der er kun 30 på dette od 100 på det andet, så det er kun 130 ialt.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.