03. oktober 2002 - 10:19Der er
15 kommentarer og 1 løsning
Opdatere flere poster i database
Hej
Jeg har en en lille produkt database med 8 produkter. I databasen har jeg lavet et felt der hedder 'vis'. Her er det meningen at man skal kunne vælge i hvilken rækkefølge man vil have vist sine produkter.
Til dette har jeg lavet en form med 8 text fields hvor man kan skrive et tal for hvilken rækkefølge man gerne vil have produkterne vist.. Mit problem er så at lave noget sql der opdatere alle 8 records på en gang.
Jeg har aldrig prøvet at opdatere på denne måde og kan ik lige gennemskue det..
Update SQL
<% if Request.ServerVariables("REQUEST_METHOD") = "POST" then Id = Request.Form("id") strSQL = "UPDATE produktnyt SET vis = '" & vis & "'" strSQL = strSQL & " WHERE produkt_id =" & Id & ";" Response.Write("Produkterne er nu opdateret!") Conn.Execute(strSQL) end if %>
1. Lav et loop der looper lige så mange gange som der skal opdateres..
2. Lav et frakoblet recordset, og opdater det....
Det er lettest at lave et loop der laver en update for hver post der skal opdateres, men jeg vil påstå det giver en bedre performance, at lave et frakoblet recordset, som du så opdaterer..... Især hvis der er mange poster der skal opdateres...!
A1 > Når jeg bruger det du har lavet er resultatet følgende :
UPDATE SET vis=1 WHERE produkt_id=1 UPDATE SET vis=1 WHERE produkt_id=1 UPDATE SET vis=1 WHERE produkt_id=1 UPDATE SET vis=1 WHERE produkt_id=1 UPDATE SET vis=1 WHERE produkt_id=1 UPDATE SET vis=1 WHERE produkt_id=1 UPDATE SET vis=1 WHERE produkt_id=1 UPDATE SET vis=1 WHERE produkt_id=1
jeg havde glemt at lave udtræk fra db'en til id feltet.. nu skriver den det rigtigt.. mit problem er bare at den prøver at execute update scriptet selvom den kun skulle gøre det hvis Request.ServerVariables("REQUEST_METHOD") = "POST" var aktuel..
Desuden ved jeg ikke helt om jeg har skrevet execute linien rigtigt.. Men jeg skriver den lige med
For Each elem In Request.Form("id") visvalue = Request.Form("vis" & elem) strSQL = "UPDATE <tabel> SET vis=" & visvalue & " WHERE produkt_id=" & elem & "" Conn.Execute(strSQL) Response.Write strSQL & "<br>" Next
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.