webForumDet fria alternativet

Update

7 svar · 284 visningar · startad av hatti

hattiMedlem sedan jan. 200165 inlägg
#1

Har problem med att göra en update det som finns i fältet förs´vinner men inget nytt läggs till vad gör jag för fel??

<!-- #include file="adovbs.inc" -->

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("forumet.mdb")&";"

Set RecSet = Server.CreateObject("ADODB.Recordset")

Addera = "Select * From personligt Where ID=" &Request.QueryString("id")
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

RecSet("description") = Request.Form("description")

RecSet.Update

RecSet.Close

Connect.Close

Set RecSet = nothing
Set Connect = nothing

Response.Redirect "forum.asp"

%>

@ndersMedlem sedan juni 200026 914 inlägg
#2

Tja, det kan vara så att du har angett fel formulärfält vid uppdateringen eller att du glömt att sätta metoden till post i formuläret.

Använd [kod]-taggar när du postar kod, så blir den lättare för oss att läsa.

Mvh

hattiMedlem sedan jan. 200165 inlägg
#3

löste det hade satt formulärfältet efter textboxen lite klantigt men det var tackvare dig jag märkte det tack

m_soderlundMedlem sedan sep. 20024 733 inlägg
#4

Förutom @nders svar, så kan följande kod vara att föredra:

<!-- #include file="adovbs.inc" --> 

<% 
Function fix(str)
str = Replace(str,"'","''")
fix = str
End Function

Dim Connect, SQL
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("forumet.mdb")&";" 

SQL = "UPDATE personligt SET description = '" & fix(Request.Form("description")) & "' WHERE Id = " & fix(Request.Querystring("id"))

Connect.Execute(SQL)

Connect.Close  : Set Connect = nothing 
Response.Redirect "forum.asp" 
%>

Jag använder inget Recordset, vilket är bättre för prestandan, plus att jag eliminerar eventuella felmeddelanden som kan komma av att det finns '.tecken i description från formuläret, samt i querystringen. :)

Engine^Medlem sedan dec. 20002 861 inlägg
#5

Ett annat sätt att göra samma uppdatering på

<!-- #include file="adovbs.inc" --> 

<% 
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("forumet.mdb") 

Uppdatera = "UPDATE personligt SET description = '" & Replace(Request.Form("description"), "'", "''") & _
            "' WHERE ID = " & Request.QueryString("id")

Connect.Execute Uppdatera, , adExecuteNoRecords

Connect.Close 
Set Connect = nothing 

Response.Redirect "forum.asp" 
%>

Använder du den här metoden, så bör du få ett tydligare felmeddelande om det är frågan det är fel på. Det ska dock fungera lika bra att använda Recordset.Update.

m_soderlundMedlem sedan sep. 20024 733 inlägg
#6

Engine^s kod är att föredra, men använd min funktion fix på description. :) Det blir lättare i slutändan när du sen uppdaterar fler fält, då slipper man skriva Replace(.....) en massa gånger, och kan återanvända fix().
Dessutom kan det vara bra att kolla ifall om Id är numeriskt, annars blir det ett felmeddelandet till. Och slutligen - att inkludera hela adovbs.inc för en konstant är väl inte så bra, varför inte bara lägga till 128 i stället för adExecuteNoRecords och skippa inkluderingen av adovbs.inc? ;)

<%
Function fix(str)
str = Replace(str,"'","''")
fix = str
End Function

Dim Connect, Uppdatera, Id

Id = Request.Querystring("id")
If Not IsNumeric(id) Then
Response.Write("Id måste vara numeriskt")

Else
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath("forumet.mdb") 

Uppdatera = "UPDATE personligt SET description = '" & fix(Request.Form("description")) WHERE ID = " & id

Connect.Execute Uppdatera,, 128

Connect.Close : Set Connect = nothing 

Response.Redirect "forum.asp" 
End If

%>
nikoMedlem sedan juni 20022 415 inlägg
#7

Att definiera om den inbyggda funktionen Fix kan ge rätt så svårfunna buggar den dag man kommer på att inkludera den i annan kod. Mindre lyckat namn, alltså.

m_soderlundMedlem sedan sep. 20024 733 inlägg
#8

niko skrev:

Att definiera om den inbyggda funktionen Fix kan ge rätt så svårfunna buggar den dag man kommer på att inkludera den i annan kod. Mindre lyckat namn, alltså.

Ajdå, det var inte så lyckat. Tack för uppmärksamheten! :)

Genererad på 377 ms · cache AV · v20260730165559-full.f96bc7eb