Avatar billede stauer Nybegynder
03. oktober 2002 - 10:19 Der 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
%>

Form

Produkt 1
<input name="id" type="text" id="id" value="<% Response.Write rs("vis") %>" size="3" maxlength="1">
<% Rs.Movenext %>

Produkt 2
<input name="id" type="text" id="id" value="<% Response.Write rs("vis") %>" size="3" maxlength="1">
<% Rs.Movenext %>

Etc..

mvh Johan
Avatar billede stauer Nybegynder
03. oktober 2002 - 10:21 #1
jeg skal vel loope update sql på en eller anden måde?
Avatar billede misbruger Nybegynder
03. oktober 2002 - 10:24 #2
Der er to måder at gøre hvad du vil....

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...!
Avatar billede a1a1 Novice
03. oktober 2002 - 10:30 #3
noget ala det her

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Form test</title>
</head>
<body>
<%
For Each elem In Request.Form("id")
    visvalue = Request.Form("vis" & elem)
    strSQL = "UPDATE <tabel> SET vis=" & visvalue & " WHERE ID=" & elem & ""
    Response.Write strSQL & "<br>"
Next
%>
<form action="testform.asp" method="post">
<input type="text" name="id" value="1"> <input type="text" name="vis1" value="1"> <br>
<input type="text" name="id" value="2"> <input type="text" name="vis2" value="2"> <br>
<input type="text" name="id" value="3"> <input type="text" name="vis3" value="1"> <br>
<input type="text" name="id" value="4"> <input type="text" name="vis4" value="1"> <br>
<input type="submit">
</form>
</body>
</html>

så skal du jo bare execute sql strengen istedet for at udskrive den

:)
Avatar billede stauer Nybegynder
03. oktober 2002 - 10:30 #4
der er kun 8 i alt - men hvordan kunne man udforme sådan et loop?
Avatar billede a1a1 Novice
03. oktober 2002 - 10:34 #5
id text feltets value SKAL være ID på posten
vis text feltets value skal være det der nu er i databasen, og name SKAL være vis + ID

ala

<input name="id" type="text" id="id" value="<% Response.Write rs("id") %>" size="3" maxlength="1">
<input name="vis<%=Response.Write rs("id")%>" type="text" id="vis" value="<% Response.Write rs("vis") %>" size="3" maxlength="1">
Avatar billede stauer Nybegynder
03. oktober 2002 - 10:44 #6
skal jeg lave id feltet som et hidden felt?
Avatar billede stauer Nybegynder
03. oktober 2002 - 10:56 #7
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
Avatar billede a1a1 Novice
03. oktober 2002 - 11:03 #8
hvordan ser din kode ud?
Avatar billede stauer Nybegynder
03. oktober 2002 - 11:04 #9
Dur det her til at tjekke om jeg skal opdatere siden eller bare vise hvad rækkefølgen er?

if Request.ServerVariables("REQUEST_METHOD") = "POST" then

For Each elem In Request.Form("id")
    visvalue = Request.Form("vis" & elem)
    strSQL = "UPDATE <tabel> SET vis=" & visvalue & " WHERE produkt_id=" & elem & ""
    Response.Write strSQL & "<br>"
Next

End If
Avatar billede a1a1 Novice
03. oktober 2002 - 11:09 #10
den opdatere?
Avatar billede stauer Nybegynder
03. oktober 2002 - 11:11 #11
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
Avatar billede stauer Nybegynder
03. oktober 2002 - 11:13 #12
det funker nu..
Avatar billede stauer Nybegynder
03. oktober 2002 - 11:13 #13
jeg havde glemt at udskifte tabel navnet.. ja hva ska jeg sige.. boller fra kohberg..

tusind tak..
Avatar billede a1a1 Novice
03. oktober 2002 - 11:15 #14
:)

selv tak da
Avatar billede stauer Nybegynder
03. oktober 2002 - 11:16 #15
lige en sidste ting.. man kan godt lave id feltet som et hidden felt ik?
Avatar billede a1a1 Novice
03. oktober 2002 - 11:24 #16
jo da :)
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