16. marts 2004 - 09:54Der er
8 kommentarer og 1 løsning
Count mysql
Hej
Jeg har lavet et stykke kode som der kontroller om brugernavn og profilnavn findes i databasen inden at profilen opdateres. Her kommer så problemet. Den kontroller fint nok om brugernavn findes i for vejen. Men så når den skal til at kontroller om profilnavn findes, gør den ikke noget.
Jeg kan slet ikke finde fejlen :-(
Her er koden: if request.QueryString("mode") = "check" then for each myValue in request.form session(myValue) = request.form(myValue) next
SQLlalala = "SELECT * from profiler where id =" & session("id") set RSlalala = Conn.execute(SQLlalala) sqlfind="Select Count(*) as Found from profiler where (username = '" & request.form("username") & "')" set RSfind = Conn.execute(sqlfind) sqlfind2="Select Count(*) as Found from profiler where (profilnavn = '" & request.form("profilnavn") & "')" set RSfind2 = Conn.execute(sqlfind2)
if not RSlalala("username") = request.Form("username") then if not RSfind("Found") = "0" then%> <script> var w = 400, h = 150; w = screen.availWidth; h = screen.availHeight; var popW = 400, popH = 150; var leftPos = (w-popW)/2, topPos = (h-popH)/2;
window.open('fejl.asp?fejl=25','popup','width=' + popW + ',height=' + popH + ',top=' + topPos + ',left=' + leftPos); </script> <% elseif not RSlalala("profilnavn") = request.Form("profilnavn") then elseif not RSfind2("Found") = "0" then%> <script> var w = 400, h = 150; w = screen.availWidth; h = screen.availHeight; var popW = 400, popH = 150; var leftPos = (w-popW)/2, topPos = (h-popH)/2;
window.open('fejl.asp?fejl=26','popup','width=' + popW + ',height=' + popH + ',top=' + topPos + ',left=' + leftPos); </script> <% end if else SQL1 = "UPDATE profiler SET " for each myValue2 in request.form if not left(myValue2,1) = "x" then SQL1 = SQL1 & "" & myValue2 &"='" & request.form(myValue2) & "', " end if next SQL1 = SQL1 & "brugeraccess='1', " SQL1 = SQL1 & "status='1' " SQL1 = SQL1 & " WHERE id ='" & session("id") & "'"
'response.Write(SQL1) Conn.Execute(SQL1) response.Redirect("/profil/") end if
end if
Hvis brugeren ikke har skiftet brugernavn, så skal den ikke kontroller om brugernavnet findes i forvejen. Men hvis brugeren så har skiftet, så skal den søge i db om brugernavnet findes. Og så den samme producure med profilnavn.
Den udskriver dette: Select Count(*) as Found from profiler where (username = 'rene@tzag.dk') Select Count(*) as Found from profiler where (profilnavn = 'Sweet no.1')
Og det ser jo helt fint ud. Hvad mener du med at jeg mixer Request.QueryString og Request.Form?
det er jo ikke så underlig at det ikke fungere. Du bør kigge dine if's igennem - de mangler rimelig meget. Jeg kan ikke umiddelbart gennemskue hvad det er du ønsker, men prøv at se på denne struktur. Du mangler nogle end if's:
if not RSlalala("username") = request.Form("username") then if not RSfind("Found") = "0" then else if not RSlalala("profilnavn") = request.Form("profilnavn") then else if not RSfind2("Found") = "0" then end if else end if end if
if not RSlalala("username") = request.Form("username") then if not RSfind("Found") = "0" then %> <script> var w = 400, h = 150; w = screen.availWidth; h = screen.availHeight; var popW = 400, popH = 150; var leftPos = (w-popW)/2, topPos = (h-popH)/2;
window.open('fejl.asp?fejl=25','popup','width=' + popW + ',height=' + popH + ',top=' + topPos + ',left=' + leftPos); </script> <%else if not RSlalala("profilnavn") = request.Form("profilnavn") then else if not RSfind2("Found") = "0" then %> <script> var w = 400, h = 150; w = screen.availWidth; h = screen.availHeight; var popW = 400, popH = 150; var leftPos = (w-popW)/2, topPos = (h-popH)/2;
window.open('fejl.asp?fejl=26','popup','width=' + popW + ',height=' + popH + ',top=' + topPos + ',left=' + leftPos); </script> <%end if else SQL1 = "UPDATE profiler SET " for each myValue2 in request.form if not left(myValue2,1) = "x" then SQL1 = SQL1 & "" & myValue2 &"='" & request.form(myValue2) & "', " end if next SQL1 = SQL1 & "brugeraccess='1', " SQL1 = SQL1 & "status='1' " SQL1 = SQL1 & " WHERE id ='" & session("id") & "'"
response.Write(SQL1) 'Conn.Execute(SQL1) 'response.Redirect("/profil/") end if end if
Men den laver denne fejl: Microsoft VBScript compilation error '800a03f6'
Expected 'End'
/profil/rediger/Default.asp, line 61
else ^
Det jeg gerne vil er at når en bruger skal ind og opdater sin profil, og brugeren fx vælger at skifte sit profilnavn, så skal der kontrollers om profilnavnet findes i forvejen. Og hvis det findes, så skal brugeren ikke have lov til at bruge det. Gav det noget mere mening?
det gør ting *rimelig* uoverskueligt, er at du navngiver dine objekter 'RSlalala' !! hvad med at give dem et beskrivende navn, så det er muligt at vide hvad det indeholder uden at skulle til at kigge på SQL'en der ligger til grund for objektet ?!?!
Men ... jeg ville nok have skrevet det sådan ... (( hvis jeg nu har forstået hvad det er du prøver på ))
Dim strError : strError = "" ' Skifter brugernavn if RSlalala("username") <> request.Form("username") then ' Tjekker om brugernavn eksistere if CInt( RSfind("Found") ) > 0 then strError = "25" end if End If
if( strError = "" ) Then ' Alt er ok, tjekker om profilnavn er ændret if RSlalala("profilnavn") <> request.Form("profilnavn") then ' Profilnavn er ændret, tjekker om det eksistere if not RSfind2("Found") = "0" then strError = "26" End if End if end if
if( strError <> "" ) Then ' Der er en fejl - brugernavn eller profilnavn eksistere %> <script> var w = 400, h = 150; w = screen.availWidth; h = screen.availHeight; var popW = 400, popH = 150; var leftPos = (w-popW)/2, topPos = (h-popH)/2;
window.open('fejl.asp?fejl=<%= strError %>','popup','width=' + popW + ',height=' + popH + ',top=' + topPos + ',left=' + leftPos); </script> <% Else SQL1 = "UPDATE profiler SET " for each myValue2 in request.form if not left(myValue2,1) = "x" then SQL1 = SQL1 & "" & myValue2 &"='" & request.form(myValue2) & "', " end if next SQL1 = SQL1 & "brugeraccess='1', " SQL1 = SQL1 & "status='1' " SQL1 = SQL1 & " WHERE id ='" & session("id") & "'"
'response.Write(SQL1) Conn.Execute(SQL1) response.Redirect("/profil/") End if
Det er rigtig nok at jeg ikke skal navngive dem 'RSlalala', det er bare en dårlig vane :-( Men det virker som det skal :-) Og det er noget mere overskuligt nu!
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.