Avatar billede tzag_dk Nybegynder
16. marts 2004 - 09:54 Der 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.

På forhånd tak!
// Rene
Avatar billede nute Nybegynder
16. marts 2004 - 10:16 #1
har du prøvet at skrive ud dine SQL'er for at se hvordan de ser ud inden de bliver kørt ?

du mixer også Request.QueryString og Request.Form ... er det med vilje ? bruger du GET eller POST som 'method' på dit formular ?

/nute
Avatar billede tzag_dk Nybegynder
16. marts 2004 - 10:23 #2
Jeg bruger POST.

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?

// Rene
Avatar billede nute Nybegynder
16. marts 2004 - 10:32 #3
har du prøvet at køre disse SQL'er direkte i din database ?

jeg kigget skævt ... glem det jeg sagde om at du mixer form og querystring :-)
Avatar billede tzag_dk Nybegynder
16. marts 2004 - 10:39 #4
Det har jeg lige gjort, og de ser helt fint ud :-)

Kan du føgle min i hvad det er at jeg vil?
For det er en noget rodet kode, så jeg tænkte på om der ikke var en anden måde at lave det på?

// Rene
Avatar billede nute Nybegynder
16. marts 2004 - 10:48 #5
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

/nute
Avatar billede tzag_dk Nybegynder
16. marts 2004 - 11:05 #6
Nu har jeg for søgt at sætte det ind...:

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?

// Rene
Avatar billede nute Nybegynder
16. marts 2004 - 11:27 #7
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

/nute
Avatar billede tzag_dk Nybegynder
16. marts 2004 - 11:42 #8
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!

Mange tak for hjælpen!
// Rene

Svar?
Avatar billede nute Nybegynder
16. marts 2004 - 11:46 #9
fino ... svar
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