Avatar billede obhat Nybegynder
08. juli 2005 - 19:31 Der er 15 kommentarer og
1 løsning

Do while problemer

Hvad gør jeg galt her, scriptet ignoreres fuldstændigt.

<%

Set rs = Conn.Execute("SELECT * FROM ref WHERE email = '"&replace(request.form("email"), "'", "''")&"'")
           
do while not rs.eof
if rs("til") = request.form("email") then
dimref = rs("fra")
else
end if
rs.movenext
loop

%>
Avatar billede nielle Nybegynder
08. juli 2005 - 19:44 #1
I 9 ud af 10 tilfælde skylden den slags fejl at SQL-kommandooen ser anderledes ude end det man forventede. Prøv derfor, som debugning, at udskrive den på skærmen før at den udføres:

<%
Set SQL = "SELECT * FROM ref WHERE email = '" & Replace(Request.Form("email"), "'", "''") & "'"
Response.Write "DEBUG: " & SQL
Set rs = Conn.Execute(SQL)
           
do while not rs.eof
    if rs("til") = request.form("email") then
        dimref = rs("fra")
    else
        ' Skulle der ikke være noget kode her?
    end if
    rs.movenext
loop
%>
Avatar billede obhat Nybegynder
08. juli 2005 - 19:54 #2
Koden udskriver kun:

DEBUG:
Avatar billede nielle Nybegynder
08. juli 2005 - 19:56 #3
Så prøv med:

<%
SQL = "SELECT * FROM ref WHERE email = '" & Replace(Request.Form("email"), "'", "''") & "'"
Response.Write "DEBUG: " & SQL
Set rs = Conn.Execute(SQL)
           
do while not rs.eof
    if rs("til") = request.form("email") then
        dimref = rs("fra")
    else
        ' Skulle der ikke være noget kode her?
    end if
    rs.movenext
loop
%>
Avatar billede obhat Nybegynder
08. juli 2005 - 20:01 #4
Så udskrives:

DEBUG: SELECT * FROM ref WHERE email = 'info17@email.dk'
Avatar billede nielle Nybegynder
08. juli 2005 - 20:04 #5
Ok, det ser ud som det skal. :^)

Så er det næste spørgsmål at kigge efter i databasen og se om der overhovedet er en (eller flere) række(r) som svare til det søgekriterie.
Avatar billede obhat Nybegynder
08. juli 2005 - 20:07 #6
Ok..
Avatar billede nielle Nybegynder
08. juli 2005 - 20:10 #7
En ting som virkelig kan drille, er hvis man har fået sat et mellemrum inf foran eller bagefter. Sådan at der f.eks. står:

"info17@email.dk "

- og ikke:

"info17@email.dk"

- i databasen.
Avatar billede obhat Nybegynder
08. juli 2005 - 20:13 #8
Det har jeg ikke.
Nu tester jeg med info1@email.dk som ikke forekommer i databasen, så skal scriptet springe frem til "else redirerect ("ingenref.asp") " det gør den bare ikke - if then ignoreres..
Avatar billede nielle Nybegynder
08. juli 2005 - 20:23 #9
Hvis du tester med noget som slet ikke er i databasen så kommer du ikke engang ind i din do-while løkke. I den sammenhæng er det lidt forkert at sige at din if-then ignoreres.

Men så skriver du noget om redirect, og den havde du ikke med i din kode. Jeg gætter på at meningen er at du gerne vil have den til at hoppe til ingenref.asp hvis der ikke er nogen email som svarer til det indtastede. Det kunne se sådan her ud:

<%
SQL = "SELECT * FROM ref WHERE email = '" & Replace(Request.Form("email"), "'", "''") & "'"
Response.Write "DEBUG: " & SQL
Set rs = Conn.Execute(SQL)

EmailFundet = False
do while not rs.eof
    EmailFundet = True
    if rs("til") = request.form("email") then
        dimref = rs("fra")
    else
        ' Skulle der ikke være noget kode her?
    end if
    rs.movenext
loop

if Not EmailFundet Then
    Response.Redirect("ingenref.asp")
End If
%>
Avatar billede obhat Nybegynder
08. juli 2005 - 20:39 #10
Hm,, måske? det er noget mere kompliceret, eller måske rettere et tæmmelig stort og nok rodet script med en lang række Jmail m.m.
På et tidspunkt havde jeg faktisk fået det til at virke, men af en eller anden grund gik den sidste Jmail i løkke og lagde serveren ned, når der kunne findes en email i databasen svarende til request.form("email"), så byggede jeg en masse om og er endt her...  men jeg prøver det du forslår.
Avatar billede obhat Nybegynder
08. juli 2005 - 20:44 #11
Nej, nøjagtig samme fejl stadig :-(
Avatar billede nielle Nybegynder
08. juli 2005 - 20:54 #12
Kan du ikke prøve at beskrive hvad det er du ønsker at der skal ske? Hvad skal der ske når der er noget i databasen som opfylder søgekriteriet og hvad skal der ske når søgekriteriet returnere 0 værdier?
Avatar billede obhat Nybegynder
08. juli 2005 - 20:58 #13
Nej undskyld, min fejl, jeg havde ikke fået fjernet den ene Set rs = Conn.Execute(SQL)

Så det virker faktisk, når jeg bruger
<%
if Not EmailFundet Then
    Response.Redirect("ingenref.asp")
End If
%>

Så det tyder på at det virker som det skal nu :-)
Avatar billede obhat Nybegynder
08. juli 2005 - 21:07 #14
Så et svar, så er der points
Avatar billede nielle Nybegynder
08. juli 2005 - 22:37 #15
Svar :^)
Avatar billede obhat Nybegynder
08. juli 2005 - 22:40 #16
Points :-)
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