Jeg er desværre kommet lidt i problemer i forbindelse med, at jeg skal have min ASP-kode til at opdatere nogle få felter via en enkel kode. Jeg vil i den forbindelse gerne have lidt hjælp, så på forhånd mange tak for jeres tid - og hjælp.
Første del af min kode ser således ud: <% if request.querystring("_UpdateUser") = "Gimoworld" then %> <% firstname= replace(Request.Form("firstname"), "'", "''") lastname= replace(Request.Form("lastname"), "'", "''") relationship= replace(Request.Form("relationship"), "'", "''") country= replace(Request.Form("country"), "'", "''") sex= replace(Request.Form("sex"), "'", "''") Net.Execute("UPDATE users SET (firstname,lastname,country,relationship,sex)values('" & firstname & "', '" & lastname & "', '" & country & "', '" & relationship & "', '" & sex & "')") %>
Du opdaterer uden WHERE, hvilket vel har den konsekvens at alle users bliver overskrevet med samme data.
Så husk lige at få et id med fra formen. Hvis du opretter en ny user så behøver du ikke et id, men så skal querien også se anderledes ud da du skal bruge INSERT INTO.
Dernæst så indsætter du data uden at tjekke længden af input. Hvis du længde på inputs i form felter der matcher længden af felterne betyder det dog ikke så meget.
Jeg ville egentlig anbefale dig at bruge recordset instedet for connection, men hvis du laver noget filtrering så er det vel også fint.
Alternativt med et recordset kunne du gøre det som, her forudsat at id ligger som et element i formularen dog med begge, hehe:
id = 0 If Session("id") <> "" Then id = Session("id") ElseIf Request.Form("id") <> "" Then id = Request.Form("id") End If
If Not (isNumeric(id) And Len("" & id) > 0 And True) Then id = 0 End If
SQL = "SELECT * FROM users WHERE id=" & id Fields = Array("firstname","lastname","country","relationship","sex")
Set RS = Server.CreateObject("ADODB.Recordset") RS.CursorType = 1 RS.LockType = 3 RS.ActiveConnection = Net RS.Source = SQL RS.Open()
If RS.EOF Then RS.AddNew End If
For Each Field In Fields If RS(Field).Type < 200 Then RS(Field) = Left(Request.Form(Field), RS(Field).DefinedSize) Else RS(Field) = Request.Form(Field) End If Next
Fields = Empty
RS.Update RS.Close Set RS = Nothing
Synes godt om
Ny brugerNybegynder
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.