/ 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
select * from login where ....
Fra : MooreHøjer


Dato : 15-05-04 09:49

Hej

Når brugeren logger ind bliver hans/hendes ID gemt i
session("membersite"). På en af siderne er der forskel på hvad de
forskellige brugere skal kunne se. Deres rettigheder er gemt i
tabellen 'login' i databasen 'bruger'. For kun at vise det som
hver enkelt bruger må se havde jeg tænk mig noget alla en
if ... then response.write "blablabla"
else
end if

I 'if' skal der tjekkes om feltet i kolonnen 'Celle' hvor
kolonnen 'ID' = session("membersite") har værdien 'JA'. Hvis den
har det skal den skrive 'blablabla' ellers skal den ikke skrive
noget.

Jeg har prøvet mig frem men kan ikke få det til at fungere...
Er der nogen der har løsningen på mit problem?

På forhånd tak!

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (15-05-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 15-05-04 10:13

MooreHøjer skrev:

> I 'if' skal der tjekkes om feltet i kolonnen 'Celle' hvor
> kolonnen 'ID' = session("membersite") har værdien 'JA'.

Hvad er felttypen for Celle? Hvis det er et boolesk felt
(sand/falsk, ja/nej) er værdien ikke 'Ja' men True.

> Jeg har prøvet mig frem men kan ikke få det til at fungere...
> Er der nogen der har løsningen på mit problem?

Det er svært at komme med løsninger uden at se lidt af din kode -
og uden at vide hvordan det ikke fungerer. Får du asp-fejl, bliver
if-sætningen altid/aldrig sand, etc.

Prøv at se på <http://asp-faq.dk/article/?id=41> for at få ideer
til hvad der er relevant at sende med af oplysninger.
--
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

MooreHojer (15-05-2004)
Kommentar
Fra : MooreHojer


Dato : 15-05-04 10:26

> Hvad er felttypen for Celle? Hvis det er et boolesk felt
> (sand/falsk, ja/nej) er værdien ikke 'Ja' men True.

Det er bare et normalt tekstfelt der enten indeholder 'Ja' elelr 'Nej'

> Det er svært at komme med løsninger uden at se lidt af din kode -
> og uden at vide hvordan det ikke fungerer.

IF select celle from login where id = session("membersite") and celle = Ja THEN
response.write "velkommen"
else

then if

> Får du asp-fejl, bliver if-sætningen altid/aldrig sand, etc.

Den siger syntaksfejl og viser mig min If-linie



Jens Gyldenkærne Cla~ (15-05-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 15-05-04 20:40

MooreHojer skrev:

> Det er bare et normalt tekstfelt der enten indeholder 'Ja'
> elelr 'Nej'

O.k. Du ville nok få bedre performance med et boolesk felt, men det
er ikke felttypen der er årsagen til dine nuværende problemer.

> IF select celle from login where id = session("membersite")
> and celle = Ja THEN response.write "velkommen"

Den går ikke. Din sql-sætning skal sendes til databasen via en
dataconnection og returneres som et postsæt for at du kan bruge den
til noget. Asp-siden kan ikke af sig selv udføre en sql-kommando.

Tag et kig på <http://html.dk/tutorials/asp/lektion18.asp> og evt.
de efterfølgende lektioner.
--
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

MooreHojer (15-05-2004)
Kommentar
Fra : MooreHojer


Dato : 15-05-04 22:12

> > IF select celle from login where id = session("membersite")
> > and celle = Ja THEN response.write "velkommen"
>
> Den går ikke. Din sql-sætning skal sendes til databasen via en
> dataconnection og returneres som et postsæt for at du kan bruge den
> til noget. Asp-siden kan ikke af sig selv udføre en sql-kommando.
>
> Tag et kig på <http://html.dk/tutorials/asp/lektion18.asp> og evt.
> de efterfølgende lektioner.

Altså noget alla

Set.conn ...blablabla...

If conn.Execute( "Select celle from login where id = session("membersite") ") =
JA Then Response.Write "velkommen"

End if



Jens Gyldenkærne Cla~ (16-05-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 16-05-04 22:32

MooreHojer skrev:

> If conn.Execute( "Select celle from login where id =
> session("membersite") ") = JA Then Response.Write "velkommen"

Tættere på, men stadig ikke nok.

Kig på databaselektionen en gang til. Du er nødt til at bruge nogle
flere linjer. Her er en skabelon du måske kan bruge:

' Conn
   Dim conn, dsn
   Set Conn = Server.CreateObject("ADODB.Connection")
   dsn = "DRIVER={Microsoft Access Driver ...."
   Conn.Open dsn

' SQL:
   Dim strSQL
   strSQL = "SELECT celle FROM ...."

' rs
   Dim rs
   set rs = Conn.execute(strSQL)

If Not rs.EOF Then
' => først her kan du arbejde med data
   IF rs("celle") = "Ja" Then
       ' Gør dit
   Else
       ' Gør dat
   End If
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

MooreHøjer (17-05-2004)
Kommentar
Fra : MooreHøjer


Dato : 17-05-04 11:54


Får denne fejl, hvad er der galt

Feiltype:
Microsoft VBScript-kompileringsfeil (0x800A0401)
Forventet slutt på setning
/loggetind.asp, line 28, column 55
strSQL = " Select celle from login where id = session("membersite") "

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

MooreHojer (17-05-2004)
Kommentar
Fra : MooreHojer


Dato : 17-05-04 12:54

> ' Conn
> Dim conn, dsn
> Set Conn = Server.CreateObject("ADODB.Connection")
> dsn = "DRIVER={Microsoft Access Driver ...."
> Conn.Open dsn
>
> ' SQL:
> Dim strSQL
> strSQL = "SELECT celle FROM ...."
>
> ' rs
> Dim rs
> set rs = Conn.execute(strSQL)
>
> If Not rs.EOF Then
> ' => først her kan du arbejde med data
> IF rs("celle") = "Ja" Then
> ' Gør dit
> Else
> ' Gør dat
> End If
> End If
> --

Tusind tak nu virker det.



MooreHojer (18-05-2004)
Kommentar
Fra : MooreHojer


Dato : 18-05-04 16:18

> Conn
> Dim conn, dsn
> Set Conn = Server.CreateObject("ADODB.Connection")
> dsn = "DRIVER={Microsoft Access Driver ...."
> Conn.Open dsn
>
> ' SQL:
> Dim strSQL
> strSQL = "Select celle from login where id = " & session("membersite") & "
"
>
> ' rs
> Dim rs
> set rs = Conn.execute(strSQL)
>
> If Not rs.EOF Then
> ' => først her kan du arbejde med data
> IF rs("celle") = "Ja" Then
> ' Gør dit
> Else
> ' Gør dat
> End If
> End If


Det virker meget fint, men så kommer næste problem....

Jeg vil gerne gentage processen et par gange, altså tjekke andre felter end
celle, f.eks. tolk. Jeg prøvede bare at gentage hele molevitten og udskifte
celle med tolk, så det kom til at se sådan her ud

Conn
Dim conn, dsn
Set Conn = Server.CreateObject("ADODB.Connection")
dsn = "DRIVER={Microsoft Access Driver ...."
Conn.Open dsn

' SQL:
Dim strSQL
strSQL = "Select celle from login where id = " & session("membersite") & "
"

' rs
Dim rs
set rs = Conn.execute(strSQL)

If Not rs.EOF Then
' => først her kan du arbejde med data
IF rs("celle") = "Ja" Then
' Gør dit
Else
' Gør dat
End If
End If


' SQL:
Dim strSQL
strSQL = "Select tolk from login where id = " & session("membersite") & " "

' rs
Dim rs
set rs = Conn.execute(strSQL)

If Not rs.EOF Then
' => først her kan du arbejde med data
IF rs("tolk") = "Ja" Then
' Gør dit
Else
' Gør dat
End If
End If


Men så får jeg den her fejl:

Feiltype:
Microsoft VBScript-kompileringsfeil (0x800A0411)
Navnet er omdefinert
/loggetind.asp, line 55, column 4
Dim strSQL
---^

(linie 55 er anden gang den kommer til 'Dim strSQL')
Hvordan løser man problemet?



Jens Gyldenkærne Cla~ (17-05-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-05-04 11:59

MooreHøjer skrev:

> Får denne fejl, hvad er der galt

Hvem svarer du og hvad svarer du på? Det er svært at se når du
ikke citerer noget.


> Microsoft VBScript-kompileringsfeil (0x800A0401)
> Forventet slutt på setning
> /loggetind.asp, line 28, column 55
> strSQL = " Select celle from login where id =
> session("membersite") "


Du skal bruge strengsammensætning med "&" for at putte variablen
session("membersite") ind i variablen strSQL:


strSQL = "Select celle from login where id = " & session("membersite")
--
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~ (18-05-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 18-05-04 17:12

MooreHojer skrev:

> Jeg vil gerne gentage processen et par gange, altså tjekke
> andre felter end celle, f.eks. tolk.

Hvis felterne hører til samme post, er der *meget* performance at
spare ved at nøjes med én select-sætning og så gemme værdierne fra
de forskellige felter i variable.


> Microsoft VBScript-kompileringsfeil (0x800A0411)
> Navnet er omdefinert
> /loggetind.asp, line 55, column 4
> Dim strSQL

Du må ikke erklære en variabel to gange. Følgende går godt:

   Dim strSQL
   
   strSQL = "SELECT foo FROM bar"

   ' .... diverse kode

   strSQL = "SELECT bar FROM foo"

- men hvis du indsætter "Dim strSQL" en ekstra gang giver det en
fejl.

Du kan løse problemet ved at slette gentagne dim-linjer, men det er
noget bedre at gøre som jeg foreslår i starten - altså nøjes med ét
sql-kald og så lægge værdierne over i asp-variable.
--
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

MooreHojer (18-05-2004)
Kommentar
Fra : MooreHojer


Dato : 18-05-04 23:28

> Hvis felterne hører til samme post, er der *meget* performance at
> spare


performance ???

> Du kan løse problemet ved at slette gentagne dim-linjer, men det er
> noget bedre at gøre som jeg foreslår i starten - altså nøjes med ét
> sql-kald og så lægge værdierne over i asp-variable.

Tusind tak endnu en gang



Jens Gyldenkærne Cla~ (19-05-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-05-04 09:29

MooreHojer skrev:

> performance ???

Ydelse - eller lidt løsere "hastighed".


Hvis man fx skal tælle hvor mange poster der er i en database kan
man gøre det på (mindst) to måder:

a)
   Dim antalPoster
   
   antalPoster = 0
   
   strSQL = "SELECT * FROM tabel"

   set rs = Conn.Execute(strSQL)
   
   Do While Not rs.EOF
       antalPoster = antalPoster + 1
       rs.movenext
   Loop

   rs.close


b)
   Dim antalPoster

   antalPoster = 0
   
   strSQL = "SELECT COUNT(*) as Antal FROM tabel"

   set rs = Conn.Execute(strSQL)

   If not rs.EOF Then
       antalPoster = rs("antal")
   End If

   rs.close


Model b vil køre mange gange hurtigere end model a - fordi
databasen kan lave optællingen i et hug, og det er hurtigere end at
bladre alle posterne igennem en for en.

En operation der henter eller skriver til en database er
forholdsvis tung (det vil sige den tager længere tid end mange
andre operationer). Derfor kan det betale sig tidsmæssigt at have
så få databasekald som muligt.

Hvis du skal have tre værdier ud fra tabellen, kan du enten lave ét
databasekald og flytte værdierne over i variable eller også lave
tre databasekald - et for hver værdi. De tre kald vil tage længere
tid og belaste serveren mere end metoden med et enkelt kald.

Meget af dette betyder ikke så meget for en side der har ganske få
besøgende. Men så snart der kommer flere samtidige brugere på
sitet, bliver performance-spørgsmålet særdeles relevant.
--
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

MooreHojer (19-05-2004)
Kommentar
Fra : MooreHojer


Dato : 19-05-04 19:54

> Meget af dette betyder ikke så meget for en side der har ganske få
> besøgende. Men så snart der kommer flere samtidige brugere på
> sitet, bliver performance-spørgsmålet særdeles relevant.

Lige et sidste spg. hvor mange samtidige brugere snakker vi om? 20? 35? 50? 100?
200? Vil bare lige vide det før jeg går i gang med at lave for meget mere, vis
jeg skal lave det om til en bedere løsning.



Jens Gyldenkærne Cla~ (19-05-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-05-04 21:43

MooreHojer skrev:

> Lige et sidste spg. hvor mange samtidige brugere snakker vi
> om?

Jo flere der er, desto vigtigere bliver det at have god performance
på siderne. Med en uheldigt skrevet side skal der ikke mere end en
lille håndfuld samtidige brugere til at lægge sitet ned.
--
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