Avatar billede steen_hansen Forsker
02. april 2006 - 01:20 Der er 26 kommentarer og
1 løsning

INSERT INTO-problem

<%

    Dim Conn, RS

%>
<!-- #include virtual="/includes/dbconnopen.asp" -->
<%

    Set RS = Conn.Execute("SELECT * FROM backendusersitg WHERE username='" & SQLEncode(Request.QueryString("user")) & "'")

    If RS.EOF Then
        RS.Close
        Conn.Close
        Response.Redirect "/error.asp?msg=Brugeren+eksisterer+ikke."
    End If

    Dim strCreateUsers
    If RS("createuser") = 1 Then
        strCreateUsers = " checked"
    Else
        strCreateUsers = ""
    End If

    Dim strEditUserRights
    If RS("edituser") = 1 Then
        strEditUserRights = " checked"
    Else
        strEditUserRights = ""
    End If

    Dim strDeactivateUsers
    If RS("deactivateuser") = 1 Then
        strDeactivateUsers = " checked"
    Else
        strDeactivateUsers = ""
    End If

    Dim strDeleteUsers
    If RS("deleteuser") = 1 Then
        strDeleteUsers = " checked"
    Else
        strDeleteUsers = ""
    End If

    '****************************************************************INSERT CHOISE
    Dim vCreateUser
    If LCase(Request.Form("createuser")) = "on" Then
        vCreateUser = 1
    Else
        vCreateUser = 0
    End If

    Dim vEditUser
    If LCase(Request.Form("edituser")) = "on" Then
        vEditUser = 1
    Else
        vEditUser = 0
    End If

    Dim vDeactivateUser
    If LCase(Request.Form("deactivateuser")) = "on" Then
        vDeactivateUser = 1
    Else
        vDeactivateUser = 0
    End If

    Dim vDeleteUser
    If LCase(Request.Form("deleteuser")) = "on" Then
        vDeleteUser = 1
    Else
        vDeleteUser = 0
    End If

    'HVORFOR KAN JEG IKKE INDSÆTTE DETTE?

    If Request.Form("mode") = "edituser" Then

        Conn.Execute("INSERT INTO backendusersitg (createuser, edituser, deactivateuser, deleteuser) VALUES (" & _
            "'" & vCreateUser & "', " & _
            "'" & vEditUser & "', " & _
            "'" & vDeactivateUser & "', " & _
            "'" & vDeleteUser & "', " & _
            WHERE username='" & SQLEncode(Request.QueryString("user")) & "' & "')")
        Conn.Close

        Response.Redirect "/admin/showallusers.asp"

    End If

%>

Jeg kan ikke indsætte rettigheder foretaget i checkboxe. Eller rettere: Jeg kan ikke komme ind på siden, fordi jeg kludrer et eller andet sted, og det er dér, hvor data skal indsættes i DB.
Avatar billede eagleeye Praktikant
02. april 2006 - 01:27 #1
Får du ikke en fejl kode?

men umiddelbart ser denne where ud til at havde lidt for meget tilsidst:

WHERE username='" & SQLEncode(Request.QueryString("user")) & "' & "')")


Prøv:

WHERE username='" & SQLEncode(Request.QueryString("user")) & "')")


Er kolonnerne tal eller tekst?
Er de tal, og du bruger Access database aå skal der ikke ' omkring.
Avatar billede eagleeye Praktikant
02. april 2006 - 01:29 #2
Arh jeg sover.. Hvilken database bruger du?

Vil du indsætte eller opdater en post?
Avatar billede steen_hansen Forsker
02. april 2006 - 01:33 #3
Jo, fejlkoden er som følger:

Microsoft VBScript compilation error '800a03ee'

Expected ')'

/admin/edituserrights.asp, line 85

WHERE username='" & SQLEncode(Request.QueryString("user")) & "')")
------^

Kolonnerne er tal, og jeg bruger MySQL. Håber du kan hjælpe, eagleeye. Jeg er kommet til at admin skal have mulighed for at administrere hvilke rettigheder de øvrige brugere skal have.

I den øverste halvdel (over '******) tjekkes der, om der står 1 (værdien 1) i RS. Er det tilfældet, skal tjekboksen tjekkes.

I den nederste halvdel skal jeg have fundet ud af, hvilke tjekbokse der er hakket af, og værdien skal gemmes. Håber du kan se hvor jeg vil hen :o)
Avatar billede steen_hansen Forsker
02. april 2006 - 01:33 #4
Jeg sover også - igen. Jeg vil opdatere en post.
Avatar billede steen_hansen Forsker
02. april 2006 - 01:34 #5
------^ skulle pege på u'et i username
Avatar billede steen_hansen Forsker
02. april 2006 - 01:36 #6
Jeg er inde på brugeren steen_hansen's brugerprofil, og han skal have nogle rettigheder: /admin/edituserrights.asp?user=steen_hansen (Kan du huske det vi baksede med i sidste uge?)
Avatar billede eagleeye Praktikant
02. april 2006 - 01:37 #7
Ja den SQL skal rettes til en update SQL prøv at rette den til:

        Conn.Execute("UPDATE backendusersitg SET " & _
            " createuser = '" & vCreateUser & "', " & _
            " edituser = '" & vEditUser & "', " & _
            " deactivateuser = '" & vDeactivateUser & "', " & _
            " deleteuser = '" & vDeleteUser & "' " & _
            WHERE username='" & SQLEncode(Request.QueryString("user")) & "'")
Avatar billede steen_hansen Forsker
02. april 2006 - 01:41 #8
Jeg får stadig den samme fejl:

        'Conn.Execute("INSERT INTO backendusersitg (createuser, edituser, deactivateuser, deleteuser) VALUES (" & _
        Conn.Execute("UPDATE backendusersitg SET " & _
            " createuser = '" & vCreateUser & "', " & _
            " edituser = '" & vEditUser & "', " & _
            " deactivateuser = '" & vDeactivateUser & "', " & _
            " deleteuser = '" & vDeleteUser & "' " & _
            WHERE username='" & SQLEncode(Request.QueryString("user")) & "'")
        Conn.Close



Microsoft VBScript compilation error '800a03ee'

Expected ')'

/admin/edituserrights.asp, line 86

WHERE username='" & SQLEncode(Request.QueryString("user")) & "'")
------^


------^ skal stadig være ud for u'et i username
Avatar billede eagleeye Praktikant
02. april 2006 - 01:44 #9
Der mangler også en " foran WHERE sådan her

            " WHERE username='" & SQLEncode(Request.QueryString("user")) & "'")
Avatar billede steen_hansen Forsker
02. april 2006 - 01:49 #10
Ok, så er den på plads. Men nu har jeg så et andet problem. Jeg smider 40 bobs oveni, hvis du gider at hjælpe med den også?

Denne her kommer frem:

    If RS.EOF Then
        RS.Close
        Conn.Close
        Response.Redirect "/error.asp?msg=Brugeren+eksisterer+ikke."
    End If

Hvorfor nu det? Jeg kan godt tjekke for om der er 0 eller 1 i RS og få tjekket de felter af, som brugeren skal have rettigheder til. Men når jeg forsøger at opdatere, får jeg at vide, at brugeren ikke eksisterer, øjensynligt fordi RS.EOF ...?
Avatar billede steen_hansen Forsker
02. april 2006 - 01:49 #11
60 bobs, håber du gider :o)
Avatar billede eagleeye Praktikant
02. april 2006 - 01:52 #12
Når du førsøger at opdater får du så overført brugeres brugernavn via Querstringen?
Det ikke sådan det ligger i et form felt i stedet?
Avatar billede eagleeye Praktikant
02. april 2006 - 01:55 #13
Navnet skal sende via action delen når de en quersysting og hvis den fejler når du forsøger at opdater er navnet nok ikke med..


<form action="xxxx.asp?user=<%=Request.QueryString("user")%>" ...>
Avatar billede steen_hansen Forsker
02. april 2006 - 01:58 #14
Brugernavnet får jeg overført fra den side, hvor vi baksede med at gemme valg i DB (sortering af ID/username/name/created/lastseen ASC/DESC).

Jeg skriver så brugerdata ud. Ikke i et textfelt, for admin skal ikke kunne rette i brugernavnet, kun i rettighederne.

<%=Server.HTMLEncode(RS("username"))%> har jeg så fat i.

Hvordan kan det øverste virke:

Set RS = Conn.Execute("SELECT * FROM backendusersitg WHERE username='" & SQLEncode(Request.QueryString("user")) & "'")

- når jeg ikke kan opdatere?
Avatar billede eagleeye Praktikant
02. april 2006 - 02:02 #15
Du bliver nød til at føre det vidre når koden ligger på samme side. Du kan føre det vidre som vist i min sidste kommentar via action tagen i form tagen.
Avatar billede steen_hansen Forsker
02. april 2006 - 02:03 #16
Ahh, så er den der! Næsten da :o)

Hvorfor kan jeg ikke tildele steen_hansen rettigheden til at slette brugere?

    Dim vDeleteUser
    If LCase(Request.Form("deleteuser")) = "on" Then
        vDeleteUser = 1
    Else
        vDeleteUser = 0
    End If

    If Request.Form("mode") = "edituser" Then

        Conn.Execute("UPDATE backendusersitg SET " & _
            " createuser = '" & vCreateUser & "', " & _
            " edituser = '" & vEditUser & "', " & _
            " deactivateuser = '" & vDeactivateUser & "', " & _
            " deleteuser = '" & vDeleteUser & "' " & _
            " WHERE username='" & SQLEncode(Request.QueryString("user")) & "'")
        Conn.Close

        Response.Redirect "/admin/showallusers.asp"

    End If



<tr style="height: 22px;">
    <td style="width: 5%; padding: 0px 0px 15px 25px;"><input type="checkbox" name="deleteuser" id="deleteuser" tabindex="4"></td>
    <td style="width: 95%; padding: 0px 0px 15px 0px;">slette brugere</td>
</tr>
Avatar billede steen_hansen Forsker
02. april 2006 - 02:04 #17
Jeg kan godt hakke af i deaktivere brugere, men ikke i slette brugere (læg lige et svar :o))
Avatar billede eagleeye Praktikant
02. april 2006 - 02:08 #18
Det forstår jeg ikke helt jeg kan ikke umiddelbart se noget galt med checkboxen den hedder det rigtige.
Og i ASP koden tjekker du også på at det rigige navn.

Hvis du prøver og tjekke hvilken værdi den overføre fra formen når checkboxen er valgt:

response.write "DEL:" & Request.Form("deleteuser")
Avatar billede eagleeye Praktikant
02. april 2006 - 02:09 #19
Er du sikker på det ikke er fordi den ikke får indsat variablen:  strDeleteUsers
Som afgør om den er checked eller ej?

    <td style="width: 5%; padding: 0px 0px 15px 25px;"><input type="checkbox" name="deleteuser" id="deleteuser" tabindex="4" <%=strDeleteUsers%> ></td>
Avatar billede steen_hansen Forsker
02. april 2006 - 02:12 #20
Mja, dette her:

    Dim strDeleteUsers
    If RS("deleteuser") = 1 Then
        strDeleteUsers = " checked"
    Else
        strDeleteUsers = ""
    End If

skal tjekke, om værdien 1 er at finde. Er det tilfældet, skal checkboxen være markeret. Der burde kunne skelnes mellem strDeleteUsers og vDeleteUser?
Avatar billede steen_hansen Forsker
02. april 2006 - 02:15 #21
DOH! Jeg havde jo glemt at sætte <%=strDeleteUsers%> ind i enden, godt set eagleeye :o)

Og endnu en gang tak, du er dagens helt, intet mindre :o)
Avatar billede eagleeye Praktikant
02. april 2006 - 02:15 #22
Ja den vil skelne imellem strDeleteUsers og vDeleteUser

Har du mulighed for at se i MySQL databasen om den sat?

Spørgsmålet er om den ikke indsætter eller om den ikke udskriver det?
Avatar billede eagleeye Praktikant
02. april 2006 - 02:16 #23
ok :)
Avatar billede steen_hansen Forsker
02. april 2006 - 02:17 #24
<input type="checkbox" name="deleteuser" id="deleteuser" tabindex="4">

manglede

<input type="checkbox" name="deleteuser" id="deleteuser" tabindex="4"<%=strDeleteUsers%>>

Det virker. Bedste ven, jeg håber virkelig du lever af dette. Ellers vil det være skønne spildte kræfter :oD
Avatar billede steen_hansen Forsker
02. april 2006 - 13:30 #25
eagleeye, jeg vil gerne kunne se ændringerne, når de er foretaget, men denne:

Response.Redirect "/admin/edituserrights.asp?user='" & SQLEncode(Request.QueryString("user")) & "'&msg=Rettigheder+er+ændret."


forårsager, at brugeren eksisterer ikke:


    Set RS = Conn.Execute("SELECT * FROM backendusersitg WHERE username='" & SQLEncode(Request.QueryString("user")) & "'")

    If RS.EOF Then
        RS.Close
        Conn.Close
        Response.Redirect "/error.asp?msg=Brugeren+eksisterer+ikke."
    End If


Eller rettere: At variablen user pludselig er tom?
Avatar billede eagleeye Praktikant
02. april 2006 - 13:35 #26
Når der er lavet en ændring redirecter den til ahowallusers.asp ifølge din kode 02/04-2006 02:03:25:

        Response.Redirect "/admin/showallusers.asp"


Hvis den skal redirecte til den side hvor man kan rette en bruger skal du ændre nanvet på dilen, men det har du sikkert gjort :) så du skal havde user med i linket:


        Response.Redirect "/admin/filsnavnet.asp?user=" & Request.QueryString("user")
Avatar billede steen_hansen Forsker
02. april 2006 - 13:46 #27
Fedest, så virker det også. TAK, eagleeye, du er en guttermand, og dejligt, at du lige var på! :o)
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