webForumDet fria alternativet

byta ut post ?

12 svar · 238 visningar · startad av Pellefant

PellefantMedlem sedan maj 20023 372 inlägg
#1

SQL = "SELECT * FROM annonser"
RecSet.Open SQL, Databas, adOpenStatic, adLockOptimistic
RecSet.AddNew
RecSet("typ") = server.htmlencode(request.form("typ"))

Har denna, och en ny post skapas, men hur gör man om man vill ersätta en befintlig post istället, säg tex där ID är 22 (egentligen Request.QueryString("idnummer") i ASP)?

(någon slags "Replace" alltså ?)

Tack på förhand.

BrimbaMedlem sedan dec. 19995 875 inlägg
#2

Prova detta:

SQL = "UPDATE annonser SET typ = '" & server.htmlencode(request.form("typ")) & "' WHERE ID = " & Request.QueryString("idnummer")
Databas.execute(SQL)
LarsGMedlem sedan dec. 200012 464 inlägg
#3

Varför gör du htmlencode på det du lägger in i databasen?


typ =  "'" & replace(request.form("typ"),"'","''") & "'" 
connect.execute "update annonser set typ = " & typ & _
" where id = " & Request.QueryString("idnummer")

Det är dags att lämna recordsetträsket.

PellefantMedlem sedan maj 20023 372 inlägg
#4

Tack så hemskt mycket.

Föjdfråga, om man har flera(i mitt fall ca 10) saker som ska uppdateras, kan man slå ihop det i en SQL sats då, eller blir det 10 st SQL satser?

SQL = "UPDATE annonser SET typ = '" & server.htmlencode(request.form("typ")) & "' WHERE ID = " & Request.QueryString("idnummer")

De tre första:
RecSet("typ") = server.htmlencode(request.form("typ"))
RecSet("titel") = server.htmlencode(request.form("titel"))
RecSet("forfattare") = server.htmlencode(request.form("forfattare"))

Tack på förhand. (igen)

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Det går att uppdatera flera kolumner samtidigt.

typ =  "'" & replace(request.form("typ"),"'","''") & "'" 
titel = "'" & replace(request.form("titel"),"'","''") & "'"
connect.execute "update annonser set typ = " & typ & _
", titel = " & titel & _
" where id = " & Request.QueryString("idnummer")
PellefantMedlem sedan maj 20023 372 inlägg
#6

Hej igen!

Får inte ihop det riktigt ändå, vad kan jag tänklas göra för fel?

SQL = "UPDATE annonser SET

typ = "'" & replace(request.form("typ"),"'","''") & "'"
titel = "'" & replace(request.form("titel"),"'","''") & "'"
forfattare = "'" & replace(request.form("forfattare"),"'","''") & "'"

amne = "'" & replace(request.form("amne"),"'","''") & "'"

email = "'" & replace(request.form("email"),"'","''") & "'"

losenord = "'" & replace(request.form("losenord"),"'","''") & "'"

utgar = "'" & replace(request.form("utgar"),"'","''") & "'"

upplaga = "'" & replace(request.form("upplaga"),"'","''") & "'"

saljespris = "'" & replace(request.form("saljespris"),"'","''") & "'"

kopespris = "'" & replace(request.form("kopespris"),"'","''") & "'"

isbn = "'" & replace(request.form("isbn"),"'","''") & "'"

ovrigt = "'" & replace(request.form("ovrigt"),"'","''") & "'"

connect.execute "update annonser set typ = " & typ & _
", titel = " & titel & _
", forfattare = " & forfattare & _
", amne = " & amne & _
", email = " & email & _
", losenord = " & losenord & _
", utgar = " & utgar & _
", upplaga = " & upplaga & _
", saljespris = " & saljespris & _
", kopespris = " & kopespris & _
", isbn = " & isbn & _
", ovrigt = " & ovrigt & _

" where id = " & Request.QueryString("idnummer")

RecSet.Open SQL, Databas, adOpenStatic, adLockOptimistic

RecSet.Update

RecSet.Close
Databas.Close
%>

Felmed:
Microsoft VBScript compilation error '800a0409'

Unterminated string constant

/kursbok/addredigera.asp, line 28

SQL = "UPDATE annonser SET
------------------------------------^

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Tag bort denna rad

SQL = "UPDATE annonser SET

Jag ser att du använder

upplaga = "'" & replace(request.form("upplaga"),"'","''") & "'"

för alla kolumner. Det skall man bara göra om datatypen är varchar/text. Om det är tal så gör man bara

upplaga = request.form("upplaga")
PellefantMedlem sedan maj 20023 372 inlägg
#8

Jag igen... :r

<%
Set Databas = Server.CreateObject("ADODB.Connection")
Databas.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("\kursbok\db\kurslitt.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")

typ = "'" & replace(request.form("typ"),"'","''") & "'"
titel = "'" & replace(request.form("titel"),"'","''") & "'"
forfattare = "'" & replace(request.form("forfattare"),"'","''") & "'"
amne = "'" & replace(request.form("amne"),"'","''") & "'"
email = "'" & replace(request.form("email"),"'","''") & "'"
losenord = "'" & replace(request.form("losenord"),"'","''") & "'"
utgar = "'" & replace(request.form("utgar"),"'","''") & "'"
upplaga = "'" & replace(request.form("upplaga"),"'","''") & "'"
saljespris = "'" & replace(request.form("saljespris"),"'","''") & "'"
kopespris = "'" & replace(request.form("kopespris"),"'","''") & "'"
isbn = "'" & replace(request.form("isbn"),"'","''") & "'"
ovrigt = "'" & replace(request.form("ovrigt"),"'","''") & "'"

connect.execute "update annonser set typ = " & typ & _
", titel = " & titel & _
", forfattare = " & forfattare & _
", amne = " & amne & _
", email = " & email & _
", losenord = " & losenord & _
", utgar = " & utgar & _
", upplaga = " & upplaga & _
", saljespris = " & saljespris & _
", kopespris = " & kopespris & _
", isbn = " & isbn & _
", ovrigt = " & ovrigt & _

" where id = " & Request.QueryString("idnummer")

RecSet.Open SQL, Databas, adOpenStatic, adLockOptimistic

RecSet.Update

RecSet.Close
Databas.Close
%>

Nu får jag felmed:
Microsoft VBScript runtime error '800a01a8'

Object required: ''

/kursbok/addredigera.asp, line 43
Rad 43 är: connect.execute "update etc...

alla kolumner är av typen text, utom "ovrigt" som är "PM", men jag förmodar att det ska behandlas som text/varchar också.

Ovanstående är "all" kod alltså, som berör databasen. I början av sidan har jag även:
<%session.lcid = 1053%>
<% Response.Buffer = True %>
<!-- #include file="adovbs.inc" -->

Kollade just att också querystringen "idnummer" finns, och det gjorde den.

PellefantMedlem sedan maj 20023 372 inlägg
#9

P.s Länken är : http://www.kursbok.tk/
och det går att logga in på "redigera annons" med test/test

LarsGMedlem sedan dec. 200012 464 inlägg
#10

Jo PM hanteras som text. Det har blivit lite namnförvirring, connect istället för databas. Jag tog bort all kod med recset eftersom det inte behövs.

<% 
Set Databas = Server.CreateObject("ADODB.Connection") 
Databas.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("\kursbok\db\kurslitt.mdb") 

typ = "'" & replace(request.form("typ"),"'","''") & "'" 
titel = "'" & replace(request.form("titel"),"'","''") & "'" 
forfattare = "'" & replace(request.form("forfattare"),"'","''") & "'" 
amne = "'" & replace(request.form("amne"),"'","''") & "'" 
email = "'" & replace(request.form("email"),"'","''") & "'" 
losenord = "'" & replace(request.form("losenord"),"'","''") & "'" 
utgar = "'" & replace(request.form("utgar"),"'","''") & "'" 
upplaga = "'" & replace(request.form("upplaga"),"'","''") & "'" 
saljespris = "'" & replace(request.form("saljespris"),"'","''") & "'" 
kopespris = "'" & replace(request.form("kopespris"),"'","''") & "'" 
isbn = "'" & replace(request.form("isbn"),"'","''") & "'" 
ovrigt = "'" & replace(request.form("ovrigt"),"'","''") & "'" 

databas.execute "update annonser set typ = " & typ & _ 
", titel = " & titel & _ 
", forfattare = " & forfattare & _ 
", amne = " & amne & _ 
", email = " & email & _ 
", losenord = " & losenord & _ 
", utgar = " & utgar & _ 
", upplaga = " & upplaga & _ 
", saljespris = " & saljespris & _ 
", kopespris = " & kopespris & _ 
", isbn = " & isbn & _ 
", ovrigt = " & ovrigt & _ 
" where id = " & Request.QueryString("idnummer") 

Databas.Close 
%>
PellefantMedlem sedan maj 20023 372 inlägg
#11

Glöm det om test/test ovan....upptäckte just att det gick att ladda ner hela db:n, vilket lätt göres med hjälp av koden ovan och grundläggande kännedom om Brinkster. Jag blev allt lite chockad när jag märkte hur enkelt det var. :l Så jag ska lösa det först, så det inte går, sen lösa problemet som beskrivs i denna tråden. Har plockat ner db:n för närvarande.

PellefantMedlem sedan maj 20023 372 inlägg
#12

Aha, tack för koden ovan LarsG, ska testa den senare ikväll, när jag fått ordning på "säkerhetsluckan".

PellefantMedlem sedan maj 20023 372 inlägg
#13

Pust, nu har jag bytt namn på databasen till något som är svårt att lista ut, typ "g48f34f79.mdb". Håller på att lägga in id, lösenord också på databasen, Koden ovan fick det att fungera LarsG, ett stort tack. :)

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)