/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Flere OR eller AND til én variabel
Fra : Kristian


Dato : 10-04-06 01:48

Undskyld den lidt ugennemskuelige overskrift. Lad mig forklare, hvad jeg
prøver at finde ud af. (I øvrigt noget jeg har haft svært ved at finde svar
på via Google - håber I kan hjælpe.)

"If (intFoo = 1 OR intFoo = 2 OR intFoo = 5) AND intBar = 2 Then"

Se på ovenstående. Er der ikke en måde, man kan sammenskrive de tre første
conditions, så man ikke behøver at skrive den samme variabel igen og igen??
F.eks. "intFoo = 1 OR 2 OR 5"?


Det ville også være rart, hvis nogen kunne fortælle en smartere måde, at
scripte på, så jeg ikke behøver at skrive så mange conditions indenfor én
"If-linje". Det bliver hurtigt uoverskueligt og i nogle scripts har jeg
syntes at have brug for 30-40 "OR" og "AND" - og det kan da ikke være den
smarteste mulighed! Konkret overvejer jeg at lave noget hjemmesideværk, som
kun viser bestemte elementer, hvis de rigtige brugere er logget ind. Det
kunne se ca. sådan ud:

If Session("strUser") = "FooGirl" OR Session("strUser") = "BarBoy" OR
Session("strAuth") <> "guest" OR Session("strAuth") = "admin" Then

.... bortset fra, at man kunne forestille sig langt flere "OR" eller "AND" i
den sætning, hvis der var mange brugere - uoverskueligt mange.

Et godt råd?



 
 
Kasper Lindberg (10-04-2006)
Kommentar
Fra : Kasper Lindberg


Dato : 10-04-06 07:58


"Kristian" <kristian.d@ofir.dk> skrev i en meddelelse
news:x1i_f.24525$kJ4.23591@news.get2net.dk...

> "If (intFoo = 1 OR intFoo = 2 OR intFoo = 5) AND intBar = 2 Then"
>
> Se på ovenstående. Er der ikke en måde, man kan sammenskrive de tre første
> conditions, så man ikke behøver at skrive den samme variabel igen og
> igen?? F.eks. "intFoo = 1 OR 2 OR 5"?
>

nope, det første er det rigtige


> Konkret overvejer jeg at lave noget hjemmesideværk, som kun viser bestemte
> elementer, hvis de rigtige brugere er logget ind. Det kunne se ca. sådan
> ud:
>
> If Session("strUser") = "FooGirl" OR Session("strUser") = "BarBoy" OR
> Session("strAuth") <> "guest" OR Session("strAuth") = "admin" Then
>
> ... bortset fra, at man kunne forestille sig langt flere "OR" eller "AND"
> i den sætning, hvis der var mange brugere - uoverskueligt mange.
>
> Et godt råd?

Brug en database

/Kasper



Jens Gyldenkærne Cla~ (10-04-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 10-04-06 09:55

Kristian skrev:

> Det ville også være rart, hvis nogen kunne fortælle en
> smartere måde, at scripte på, så jeg ikke behøver at skrive så
> mange conditions indenfor én "If-linje". Det bliver hurtigt
> uoverskueligt og i nogle scripts har jeg syntes at have brug
> for 30-40 "OR" og "AND" - og det kan da ikke være den
> smarteste mulighed!


Kig på select case:

   Select Case intFoo
       Case 1, 2, 5
        intFoo er 1, 2 eller 5
       Case 42
       '
       Case Else
   
   End Select



> Konkret overvejer jeg at lave noget
> hjemmesideværk, som kun viser bestemte elementer, hvis de
> rigtige brugere er logget ind. Det kunne se ca. sådan ud:

Opret nogle brugergrupper og benyt dem til at styre rettighederne:

   If session("group") = "superbruger" Then
       ' bla bla
   End If

Du kan også lave en numerisk tildeling, så man får et hierarki af
grupper:

   If session("userlevel") >= 3 Then
   

Man kan gøre skjule numrene ved at definere passende konstanter:

   Const GUEST = 0
   Const USER = 1
   CONST SUPERUSER = 2
   CONST ADMIN = 5


Endelig kan man lagre differentierede tilladelser som en bitsum.
Det kan fx være som følger:

   CONST LAES = 1
   CONST OPRET = 2
   CONST RET = 4
   CONST SLET = 8
   CONST BRUGERADMIN = 16

Dim testSum = LAES + OPRET + BRUGERADMIN

If testSum & LAES = LAES Then
   ' Brugeren har adgang til at læse
End IF

IF testSum & BRUGERADMIN = BRUGERADMIN Then
   ' Brugeren har tilladelse til at administrere brugere
End If
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Kristian (10-04-2006)
Kommentar
Fra : Kristian


Dato : 10-04-06 12:42

Tak for det gode og brugbare svar!

Det viste sig, at mit problem var, at jeg ikke vidste, man kan adskille
mulige værdier med komma i Select Case...!

Med hensyn til brugergrupper er det selvfølgelig netop, hvad jeg vil gøre.



----- Original Message -----
From: "Jens Gyldenkærne Clausen" <jens@gyros.invalid>
Newsgroups: dk.edb.internet.webdesign.serverside.asp
Sent: Monday, April 10, 2006 10:54 AM
Subject: Re: Flere OR eller AND til én variabel


> Kristian skrev:
>
>> Det ville også være rart, hvis nogen kunne fortælle en
>> smartere måde, at scripte på, så jeg ikke behøver at skrive så
>> mange conditions indenfor én "If-linje". Det bliver hurtigt
>> uoverskueligt og i nogle scripts har jeg syntes at have brug
>> for 30-40 "OR" og "AND" - og det kan da ikke være den
>> smarteste mulighed!
>
>
> Kig på select case:
>
> Select Case intFoo
> Case 1, 2, 5
> intFoo er 1, 2 eller 5
> Case 42
> '
> Case Else
>
> End Select
>



>> Konkret overvejer jeg at lave noget
>> hjemmesideværk, som kun viser bestemte elementer, hvis de
>> rigtige brugere er logget ind. Det kunne se ca. sådan ud:
>
> Opret nogle brugergrupper og benyt dem til at styre rettighederne:
>
> If session("group") = "superbruger" Then
> ' bla bla
> End If
>
> Du kan også lave en numerisk tildeling, så man får et hierarki af
> grupper:
>
> If session("userlevel") >= 3 Then
>
>
> Man kan gøre skjule numrene ved at definere passende konstanter:
>
> Const GUEST = 0
> Const USER = 1
> CONST SUPERUSER = 2
> CONST ADMIN = 5
>
>
> Endelig kan man lagre differentierede tilladelser som en bitsum.
> Det kan fx være som følger:
>
> CONST LAES = 1
> CONST OPRET = 2
> CONST RET = 4
> CONST SLET = 8
> CONST BRUGERADMIN = 16
>
> Dim testSum = LAES + OPRET + BRUGERADMIN
>
> If testSum & LAES = LAES Then
> ' Brugeren har adgang til at læse
> End IF
>
> IF testSum & BRUGERADMIN = BRUGERADMIN Then
> ' Brugeren har tilladelse til at administrere brugere
> End If
> --
> Jens Gyldenkærne Clausen
> Svar venligst under det du citerer, og citer kun det der er
> nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
> hvordan på http://usenet.dk/netikette/citatteknik.html



Jens Gyldenkærne Cla~ (10-04-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 10-04-06 12:59

Kristian skrev:

> Tak for det gode og brugbare svar!

Velbekomme. Hvis du vil gøre lidt til gengæld, må du gerne læse min
signatur.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste