Avatar billede kstoffer Nybegynder
27. oktober 2002 - 19:26 Der er 20 kommentarer og
1 løsning

If sætning springer videre til else selvom betingelsen er opfyldt

Problemmet er at selvom betingelsen er opfyldt, springer den alligevel videre ned til else-sætningen. Det gør den kun nå en INSERT sætning er sat ind eller virker den fint.

Her er min kode



Set RS = Server.CreateObject("ADODB.RecordSet")
    mySQL = "SELECT brugernavn"
    mySQL = mySQL & " FROM bruger"
    mySQL = mySQL & " WHERE brugernavn = '" & request.form("brugernavn") & "'"
    RS.Open mySQL, Conn, 1, 3

    If NOT (Err.Number<>0) Then
        If RS.EOF OR RS.BOF Then
        response.write("findes ikke")
'            mySQL = "INSERT INTO bruger"
'            mySQL = mySQL & " (brugernavn, kodeord)"
'            mySQL = mySQL & " VALUES ('" & request.form("brugernavn") & "', '" & request.form("kodeord") & "');"
'            Conn.Execute mySQL

        Else
            response.write("findes")
        RS.close
    End if
Else
Response.write "There were errors " &  vbCR
End if


Selvom brugernavn ikke findes i databasen, så bliver bruger godt nok tilføjet til databasen, men den udfører og resten af else-sætningen. Hvordan kan det være?


Tonning
Avatar billede kstoffer Nybegynder
27. oktober 2002 - 19:27 #1
Jeg ved ikke om det har nogen betydning, men databasen er en mySQL.
Avatar billede erikjacobsen Ekspert
27. oktober 2002 - 19:49 #2
Det har næppe betydning, men jeg kan ikke gennemskue hvad
du egentlig spørger om og hvad dit problem er. Vi du
prøve at forklare dig bedre?
Avatar billede eagleeye Praktikant
27. oktober 2002 - 20:00 #3
det vil sige hvis du køre dit script så skriver den:

findes ikkefindes  ????
Avatar billede kstoffer Nybegynder
27. oktober 2002 - 20:00 #4
Mit problem er at alle sætninger efter else bliver udført og selvom at den først if rs.eof or rs.bof bliver udført.
Altså


der findes ikke nogle bruger med det pågældende rs("brugernavn") derfor bliver denne indsat i tabellen.

if rs.eof or rs.bof then
            mySQL = "INSERT INTO bruger"
            mySQL = mySQL & " (brugernavn, kodeord)"
            mySQL = mySQL & " VALUES ('" & request.form("brugernavn") & "', '" & request.form("kodeord") & "');"
            Conn.Execute mySQL

Problemmet er bare at det næste også bliver udført, selovom det overstående også er blevet udført

else

response.write("Dette skal ikke udføres hvis ovenstående er udført, men bliver det alligevel")

end if


Håber det forklarede det lidt bedre.
Avatar billede kstoffer Nybegynder
27. oktober 2002 - 20:04 #5
nej den skriver ikke engang findes ikkefindes, men bare findes.
Avatar billede erikjacobsen Ekspert
27. oktober 2002 - 20:04 #6
Jamen, der er ikke rigtigt kstoffer. Det kan ikke lade sig
gøre. Der er noget galt et andet sted i din kode.
Avatar billede erikjacobsen Ekspert
27. oktober 2002 - 20:05 #7
Hvis den skriver "findes", så er det jo en bruger, dere allerede
er i databasen.
Avatar billede kstoffer Nybegynder
27. oktober 2002 - 20:06 #8
Her er resten af koden, hvilket ikke er meget mere.


<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
if (Request.Form("brugernavn") <> "" AND Request.Form("kodeord") <> "") then
Set RS = Server.CreateObject("ADODB.RecordSet")
    mySQL = "SELECT brugernavn"
    mySQL = mySQL & " FROM bruger"
    mySQL = mySQL & " WHERE brugernavn = '" & request.form("brugernavn") & "'"
    RS.Open mySQL, Conn, 1, 3
    varBrugernavn = request.Form("brugernavn")
    If NOT (Err.Number<>0) Then
        If RS("brugernavn").EOF OR RS("brugernavn").BOF Then
        response.write("findes ikke")
            mySQL = "INSERT INTO bruger"
            mySQL = mySQL & " (brugernavn, kodeord)"
            mySQL = mySQL & " VALUES ('" & varBrugernavn & "', '" & request.form("kodeord") & "');"
            Conn.Execute mySQL

        Else
            response.write("findes")
        RS.close
    End if
Else
Response.write "There were errors " &  vbCR
End if

End if
End if
%>
Avatar billede eagleeye Praktikant
27. oktober 2002 - 20:07 #9
Ja hvis den kun skriver findes så har den ikke været inde i then dele, men den kode du har vist føst.
Avatar billede eagleeye Praktikant
27. oktober 2002 - 20:08 #10
Prøv at rette denne linie:

      If RS("brugernavn").EOF OR RS("brugernavn").BOF Then

Til:

      If RS.EOF OR RS.BOF Then
Avatar billede erikjacobsen Ekspert
27. oktober 2002 - 20:09 #11
Hvorfor skriver du nu
    If RS("brugernavn").EOF OR RS("brugernavn").BOF Then
??
Avatar billede kstoffer Nybegynder
27. oktober 2002 - 20:09 #12
jo fordi jeg kan se i databasen at brugeren er blevet tilføjet til tabellen.
Avatar billede kstoffer Nybegynder
27. oktober 2002 - 20:09 #13
Ups det var også en fejl det skal der selvfølgelige ikke stå
Avatar billede eagleeye Praktikant
27. oktober 2002 - 20:10 #14
Så slet brugere

Tilføj brugere på ny og se den skriver:
findes ikke

Prøv at tilføje brugere igen og den skriver:
findes
Avatar billede erikjacobsen Ekspert
27. oktober 2002 - 20:10 #15
Den var der i forvejen, kstoffer. Eller er blevet tilføjet af
kode du ikke har vist os.
Avatar billede eagleeye Praktikant
27. oktober 2002 - 20:12 #16
Det er fysik umilgt for en if sætning at udføre både then og else delen i samme omgang. Det er enten eller.

Hvis brugeren findes udskriver den findes fordi brugere er i databasen, hvilket var forvendtet??

Eller har til 10 gange den samme bruger ?
Avatar billede kstoffer Nybegynder
27. oktober 2002 - 20:13 #17
problemmet er at nå jeg tilføjere brugere så viser den ikke findes ikke, men derimod findes selvom brugeren ikke findes.
Avatar billede erikjacobsen Ekspert
27. oktober 2002 - 20:14 #18
Vi har forstået dit problem. Men det passer ikke. Har du et
link til siden?
Avatar billede eagleeye Praktikant
27. oktober 2002 - 20:34 #19
Hvis du prøver at oprette en bruger med et navn som du med 100% sikkerhed ved ikke findes, hvad skriver den så ?
Avatar billede kstoffer Nybegynder
27. oktober 2002 - 20:35 #20
Af højst udforståelige årsager virker det nu, der skulle bare en spontan genstart af maskinen til, før at det virkede.

Jeg undskylder for jeres ulejlighed.
Avatar billede eagleeye Praktikant
27. oktober 2002 - 20:41 #21
Ok.. :)
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