Avatar billede martin29 Nybegynder
09. april 2005 - 19:46 Der er 42 kommentarer og
1 løsning

Expected statement fejl..

Hejsa!

Kan ikke længere se fejlen.
Får følgende fejl:
Microsoft VBScript compilation error '800a0400'

Expected statement

/tracktrace/login.asp, line 17

" WHERE (Qxl = '" & strUID & "')"&_
^


Linie 17 er " WHERE (Qxl = '" & strUID & "')"&_



----

<%
' Hvis der er blevet trykket på knappen "Login"
If Request.Form("Action") = "Login" Then
    ' Her forberedes de indtastede værdier til validering
    strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
    strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))

    ' Hvis der er skrevet noget i både brugernavn og adgangskode
    If Len(strUID) > 0 And Len(strPWD) > 0 Then

        ' DSNLess forbindelse til databasen<br>
        Set myConn = Server.CreateObject("ADODB.Connection")
        myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&server.mappath("/")& "\..\..\DB\database.mdb"
       
        ' Opbygning af SQL streng<br><br>
        strSQL = "SELECT * FROM database WHERE id = "& Session("Id")  &";"
            " WHERE (Qxl = '" & strUID & "')"&_
            " AND (Tlf = '" & strPWD & "')"

        Set rs = myConn.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
            ' Hvis brugeren fandtes i databasen
            intUID = rs("Id")
        Else
            ' Hvis brugeren ikke fandtes i databasen
            strERR = "Du blev ikke godkendt af systemet"
        End If

        ' Rydder op i vores connection objekt
        myConn.Close
        Set myConn = Nothing

        If Len(intUID) Then
            ' Hvis variablen intUID indeholder en værdi sættes denne i sessionen "UserID" og brugeren bliver sendt videre
            Session("Id") = intUID
            Response.Redirect("beskyttet.asp")
        End If
    Else
        ' Hvis der ikke var angivet brugernavn og adgangskode
        strErr = "Du skal skrive både brugernavn og adgangskode"
    End If

    If Len(strErr) > 0 Then
        ' Her laves fejlmeddelsen om til rød skrift
        strErr = "<p><font color=red>" & strErr & "</font></p>"
    End If
End If
%>
Avatar billede busschou Praktikant
09. april 2005 - 19:48 #1
det er fordi du deler din streng på flere linjer
Avatar billede busschou Praktikant
09. april 2005 - 19:48 #2
strSQL = "SELECT * FROM database WHERE id = "& Session("Id")  &";" &_
            " WHERE (Qxl = '" & strUID & "')"&_
            " AND (Tlf = '" & strPWD & "')"
Avatar billede busschou Praktikant
09. april 2005 - 19:48 #3
der manglede en &_
Avatar billede busschou Praktikant
09. april 2005 - 19:53 #4
men kan man lave en sql med flere Where clause på den måde?...viste jeg ikke..smart hvis man kan
Avatar billede martin29 Nybegynder
09. april 2005 - 19:53 #5
ok tak men nu får jeg så:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'id ='.

/tracktrace/login.asp, line 20

linie 20
Set rs = myConn.Execute(strSQL)
Avatar billede busschou Praktikant
09. april 2005 - 19:54 #6
prøv at udskrive din strSQL med en response.write før du lave linje 20
For det betyder at der er fejl i den
Så læg den herind bagefter
Avatar billede busschou Praktikant
09. april 2005 - 19:58 #7
forstår ikke at du har to stk WHERE
skal den anden ikke være en AND?
Avatar billede martin29 Nybegynder
09. april 2005 - 19:59 #8
kan jeg lige få et hint til hvordan koden skal se ud på respons.write
Avatar billede busschou Praktikant
09. april 2005 - 20:01 #9
strSQL = "SELECT * FROM database WHERE id = "& Session("Id")  &";" &_
            " WHERE (Qxl = '" & strUID & "')"&_
            " AND (Tlf = '" & strPWD & "')"

response.write(strSQL)

Set rs = myConn.Execute(strSQL)
----------------
Men jeg forstår ikke at du ikke har det sådan her
--------------
strSQL = "SELECT * FROM database WHERE id = "& Session("Id")  &";" &_
            " AND (Qxl = '" & strUID & "')"&_
            " AND (Tlf = '" & strPWD & "')"

response.write(strSQL)

Set rs = myConn.Execute(strSQL)
Avatar billede busschou Praktikant
09. april 2005 - 20:02 #10
vrøvl det nederste jeg skrev..
Men lav den response.write som det øverste
Så får du strSQL på skærmen og så tager vi det derfra
Avatar billede busschou Praktikant
09. april 2005 - 20:03 #11
men jeg forstår ikke din strSQL ..kan du forklare ideen?
Hvad skal de to Where gøre og hvorfor et ; midt i?
Avatar billede martin29 Nybegynder
09. april 2005 - 20:05 #12
Kender ikke forskellen i de 2 kodeformer.
det jeg har er bygget op ud fra http://activedeveloper.dk/artikler/default.asp?articleid=88

får nu

SELECT * FROM database WHERE id = ; WHERE (Qxl = 'IdaF') AND (Tlf = '11234567')
Microsoft VBScript runtime error '800a01a8'

Object required: ''

/tracktrace/login.asp, line 23
Avatar billede busschou Praktikant
09. april 2005 - 20:07 #13
ok problem nummer et er så at Session("Id") er tom
for den kan jo ikke vælge id = .. altså id lig ingenting
Avatar billede busschou Praktikant
09. april 2005 - 20:08 #14
tror du ikke du har lavet en copy paste fejl?
Jeg ville tro det skulle være følgende.. så prøv det lige hvis det er
strSQL = "SELECT * FROM database WHERE (Qxl = '" & strUID & "')"&_
            " AND (Tlf = '" & strPWD & "')"
Avatar billede martin29 Nybegynder
09. april 2005 - 20:12 #15
Ved ikke om dette her forklarer mere. :-)
Jeg er ikke selv en så skrap til Asp endnu, så håber linket forklarer nærmere.
http://www.eksperten.dk/spm/602787

Det har virket og så sidder jeg og kæler lidt for designet, og kommer til at slette det oprindelige..

I min database har jeg bl.a. en Id,Qxl,Tlf
Det er meningen at folk indtaster deres Qxl og Tlf for at logge ind.

Ved efterfånden ikke om jeg har rodet så meget rundt i det at jeg ikke har Id,Qxl,Tlf rigtig pladseret.
Avatar billede busschou Praktikant
09. april 2005 - 20:15 #16
Du kan mig bekendt ikke have to Where clause sepereret af semicolon
Endvidere når den fejler så er det fordi du ikke har sat Session("Id")
Men den sætter du jo også først længere nede når brugeren er logget ind
Så prøv det jeg skrev 20:08:28 og se om ikke det gør trikket :o)
Avatar billede martin29 Nybegynder
09. april 2005 - 20:15 #17
Microsoft VBScript compilation error '800a0408'

Invalid character

/tracktrace/login.asp, line 16

strSQL = "SELECT * FROM database WHERE (Qxl = '" & strUID & "')"&_ " AND (Tlf = '" & strPWD & "')"
------------------------------------------------------------------------^
Avatar billede martin29 Nybegynder
09. april 2005 - 20:17 #18
ok får nu

SELECT * FROM database WHERE (Qxl = 'IdaF') AND (Tlf = '98542217')
Microsoft VBScript runtime error '800a01a8'

Object required: ''

/tracktrace/login.asp, line 22
Avatar billede busschou Praktikant
09. april 2005 - 20:17 #19
strSQL = "SELECT * FROM database WHERE (Qxl = '" & strUID & "')" AND (Tlf = '" & strPWD & "')"
Avatar billede busschou Praktikant
09. april 2005 - 20:18 #20
ok skrev lige forbi hinanden der :o)
Avatar billede busschou Praktikant
09. april 2005 - 20:19 #21
hvor er linje 22 nu ?
Avatar billede martin29 Nybegynder
09. april 2005 - 20:22 #22
If not...

'Set rs = myConn.Execute(strSQL)
        response.write(strSQL)

        If Not (rs.BOF Or rs.EOF) Then
            ' Hvis brugeren fandtes i databasen
            intUID = rs("Id")
Avatar billede busschou Praktikant
09. april 2005 - 20:25 #23
ahh du har udkommenteret linjen med execute..
Den skal med igen :o)
Avatar billede martin29 Nybegynder
09. april 2005 - 20:27 #24
SUPER. :-)

Tak...
Hvad er så forskellen mellem den gamle og den nu kode rent teknisk?
smid et svar. :-)
Avatar billede busschou Praktikant
09. april 2005 - 20:31 #25
Jamen du havde en sql sætning med to WHERE - hvilket ikke giver mening
Du havde også et semicolon hvilket jeg generelt ikke tror kan bruges i sql
Du bad den søge på Id i din database ud fra Id i en session som du ikke havde sat
Det kan den jo ikke

Nu søger du på de indtastede bruger oplysninger med login og password
Det finder den i databasen OG_SÅ sætter den session("Id") som du så på dine andre sider kan teste om er sat :o)
Men godt det virker :o)
Avatar billede martin29 Nybegynder
09. april 2005 - 20:55 #26
Lige et spørgsmål mere til experten. :-)

Hvad sker der så hvis brugeren står 2 steder i databasen med samme brugernavn og tlf.
Avatar billede busschou Praktikant
09. april 2005 - 20:58 #27
Det gør vist i denne henseende ikke noget
Det der sker er at din rs variablen er et array eller en liste af de brugere som den finder i databasen
Men du tester kun på den første
Det betyder også at session("Id") vil være id´et på den første forekomst af brugeren i databasen
Men hvis du benytter det som du har set det på dit link. Ja så på de sider du skal beskytte der tester du jo blot om den session er tom eller ej...og så er det jo ligegyldig hvilket id den indeholder når blot den indeholder et
Men hvorfor indeholder databasen dem flere gange?
Avatar billede martin29 Nybegynder
09. april 2005 - 21:10 #28
Nu skal du bare høre.. ;-)

Når "kunden" bestiller en vare udfylder kunden personlige oplysninger samt hvilken vare vedkommende ønsker.

Vi følger derefter op på ordren kunden kan ved at logge ind se sin ordre status.

Hvis kunden kommer igen og køber noget mere eller andet skal han det hele igennem een gang til. Det kunne nok være lavet smartere, men indtil vi får råd til en Proff hjemmeside, skal det fungere.

Dermed kommer samme brugernavn og tlf i databasen igen.
Så det skal bare virke..
Kan man lave noget i strSQL = "SELECT * hvor det ALTID er den sidste indtastning der bliver vist?
Avatar billede martin29 Nybegynder
09. april 2005 - 21:12 #29
sidste indtastning som samme bruger har lavet? ;-)
Avatar billede martin29 Nybegynder
09. april 2005 - 21:12 #30
Det skal naturligvis stadig være sådan at alle andre kan logge ind..
Avatar billede busschou Praktikant
09. april 2005 - 21:12 #31
ok men så skal du nok ikke på de beskyttede sider blot teste på om sessionen er sat
Så skal du jo slå op i databasen og finde de ting som er specielt relaterede til den enkelte id
Altså det jeg mener er jo at du skal blot være sikker på alle kunder ikke kan se alle andre kunders vare :o)
Avatar billede busschou Praktikant
09. april 2005 - 21:14 #32
altså når en kunde køber noget så putter du vedkommende i en database?
Det er der jo ingen grund til at gøre mere end een gang
Du kan jo bare tjekke om kunden er oprettet ..hvis ikke så oprettes kunden :o)
Avatar billede busschou Praktikant
09. april 2005 - 21:16 #33
jeg er ikke 250% sikker på hvad du præcis mener...men hvis der dukker noget op så laver du bare et spg til ;o)
Avatar billede martin29 Nybegynder
09. april 2005 - 21:16 #34
Hmm er der en sikkerheds risiko nu efter din mening?

Du mener at jeg skal ud over Id have noget mere der genkender den enkelte kunde?
Det vi lige har lavet tjekker vel om QXL og TLF passer sammen på samme person i ID?
Avatar billede martin29 Nybegynder
09. april 2005 - 21:20 #35
21:14:17

Når kunden køber en vare udfylder kunden selv formular, som automatisk havner i DB.
Her bliver der ikke tjekket om kunden eksistere i forvejen.

Det skal lige siges at samme formular indholder ALT hvadden enkelte kunde skal have.

21:16:15
Kunne for sjovt oprette en kunde med samme navn og nr og se hvad der sker.. :-)
Avatar billede busschou Praktikant
09. april 2005 - 21:22 #36
Jeg forstår det bare ikke fordi du sagde at DB bestod af ID TLF QXL
Det eneste jeg siger er at du skal huske at tjekke brugeren op mod der hvor varene er så kun de vare der tilhører brugeren bliver vist...ved jo ikke hvordan du gør ...har kun set en login side :o)
Avatar billede martin29 Nybegynder
09. april 2005 - 21:26 #37
DB bestod BL.A. af ID TLF QXL :-)

har lige testet:
Resultat... Den viser den sidste indtastning når man logger ind som den skal. :-)

Tak for hjælpen. :-)
Ville godt vise dig hvad jeg mener men vil ikke sprede for mange oplysninger her. :-)
Avatar billede busschou Praktikant
09. april 2005 - 21:28 #38
det er oki.. ser det vel engang når butikken bliver populær ;o)
Avatar billede martin29 Nybegynder
09. april 2005 - 21:29 #39
vil du have et link? :-)
Avatar billede busschou Praktikant
09. april 2005 - 21:30 #40
ja gerne bare for at se lidt :;o)
Avatar billede martin29 Nybegynder
09. april 2005 - 21:32 #41
www.shopfloor.dk

PS. så får du også lov lige at komme med en kommentar hvad du syntes om den.
Men er ikke færdig endnu, er i fuld gang med at kæle lidt for detaljerne og få butikken til at fungere..
Avatar billede busschou Praktikant
09. april 2005 - 21:38 #42
ok har luret
Jamen afhængig af hvornår den skal være færdig så er du jo rimelig godt med
Det eneste direkte dårlige jeg synes er til venstre hvor produkter skal stå
Det er ikke godt der kommer en scroll både horisontalt og vertikalt..det ødelægger designet
Men det kan jo nåes at rettes :o)
Virker i øvrig so far lige godt i IE og firefox :o)
Avatar billede martin29 Nybegynder
09. april 2005 - 21:50 #43
Tak. :-)
Rart at høre andres mening om det man laver..

Det med scroll var påtænkt hvis man havde en meget lille skærm.
Tak for tippet det tager jeg prositvt til mig og får kigget på. :-)

Fortsat go' aften...
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