Avatar billede whitestone Nybegynder
19. januar 2004 - 19:57 Der er 5 kommentarer og
1 løsning

loop bruger rettigheder

Hej

Dette er egentlig en fortsættelse af spm http://www.eksperten.dk/spm/348666 -
Brugere med forskellige rettigheder.

På side2.asp skal 2 tabeller (pages og user_right_rel) sammenlignes. Er der sammenfald mellem de 2 tabeller skal der udføres en response.write hvor checkboxen bliver CHECKED. Ud fra de resterende rækker i tabellen pages skal der udføres en response.write hvor checkboxen ikke bliver CHECKED.

Men som det er nu, så skal der bare være en record hvor der er sammenfald mellem de 2 tabeller, hvorefter at resultatet bliver at alle check bokse bliver CHECKED.

Min kode er:



<form action="side3.asp" method="post" name="form1" id="form1">
<%

set adoCn = createobject("ADODB.Connection")
adoCn.Open strConn2       


user = request.form("user")

response.write "<input type=hidden name=user value=" & user & ">"


set adoRs = adoCn.execute("select page_id, title from pages")


' lav liste med brugere
do while not(adoRs.eof or adoRs.bof)

    ' check om bruger har rettighed allerede
    set ext_rs = adoCn.execute("select * FROM user_right_rel where user_right_id = " & user)
    if ext_rs.EOF Then
        checked_right=""
    else
        checked_right="CHECKED"
    end if
   
    ' lav checkboxe
    response.write "<input type=checkbox name=right_" & adoRs("page_id") & " value=1 " &checked_right& ">admin for gruppe " & adoRs("title") & "<br>"

    adoRs.MoveNext
   
    loop

adoCn.Close
set adoCn = nothing

%>


<input type=submit value="U P D A T E">
</form>




Hvad går der galt ???
Avatar billede eagleeye Praktikant
19. januar 2004 - 20:02 #1
Hvordan er der sammenfald på de to tabeller er det via user?? eller er det page_id?

og hvad er fejlen?
Avatar billede whitestone Nybegynder
19. januar 2004 - 20:28 #2
eagleeye >> det er page_id

og fejlen sker højest sandsynlig i dette afsnit:

    if ext_rs.EOF Then
        checked_right=""
    else
        checked_right="CHECKED"
    end if

hvor den skulle sammenligne adoRs("page_id") med ext_rs("page_id").

Eller sagt på en anden måde hvis user i tabellen user_right_rel har et page_id tilknyttet sig, så findes recorden i tabellen user_right_rel, og checked_right="CHECKED". Har user ikke et page_id tilknbytte sig, så findes recorden ikke i tabellen user_right_rel og checked_right=""
Avatar billede eagleeye Praktikant
19. januar 2004 - 20:30 #3
Du kan også udvide SQL sådan her og bevare den if sætning du her:

set ext_rs = adoCn.execute("select * FROM user_right_rel where user_right_id = " & user " AND page_id = " & adoRs("page_id"))
Avatar billede eagleeye Praktikant
19. januar 2004 - 21:00 #4
Så tjekke den om en bruger (user) har rettighed den side (page_id) som man er ved at skrive ud. Og har en bruger ikke det vil ext_rs være tomt  ext_rs.EOF = true
Avatar billede whitestone Nybegynder
19. januar 2004 - 21:06 #5
eagleeye >>  Sådan, det var det :-)

Men jeg fatter ikke hvorfor den skulle have begge betingelser ?

Du skriver "...Du kan også udvide..."  - Er der da en anden løsning som er bedre ?

Skriv et svar så er der 200 på vej :-) En hel dags bøvl løst på ca. 1 time - thanks
Avatar billede eagleeye Praktikant
19. januar 2004 - 21:14 #6
Jeg ville mene det er den bedste løsning som vist.

Hvis du har en masse records i tabellen pages: page_id=1,page_id=2,page_id=3 .... + mange flere og vil tjekke om en bruger har rettihed til den side loop'et er kommet til adoRs("page_id") skal man lave et opslag i tabellen user_right_rel.

Hvis man kun finder poster i user_right_rel hvor user bruges til at søge efter vil den finde alle de poster hvor user findes, det vil sige at alle de page_id user har adgang til. For at kunne af gøre om user har adgang den side man udskriver ado("page_id") skal man så loop'e igennem ext_rs og se om adoRs("page_id" findes.

Så hvis man laver søgningen sådan den tjekke om der findes en post hvor user_right_id er lig user OG page_id er lig den adoRs("page_id") man er kommet til findes. Så kan man spare et mange loop med ext_rs og bare tjekke om ext_rs er tomt.

Derfor mener jeg det er den bedste løsning ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester