En metode ville være at kombinere rækkernes id'er med de enkelte feltnavne, så kan du nemlig finde tilbage til de rigtige data når du skal opdatere i databasen igen.
Eksempel: Formularen genereres med de rækker der nu er trukket ud af databasen, dvs. formularen er dynamisk i størrelse alt efter hvormange rækker du trækker ud.
<form> <% do while not rs.eof %> Navn: <input type="text" name="txtNavn_<%=rs("id")%>" value="<%=rs("navn")%>"><br> Adresse: <input type="text" name="txtAdresse_<%=rs("id")%>" value="<%=rs("adresse")%>"><br> <% rs.movenext loop %> <input type="submit" value="Gem ændringer"> </form>
På serveren kan du så gennemløbe de felter som er sendt og trække id ud af feltnavnet og benytte dette til opdatering.
<% if request.servervariables("REQUEST_METHOD") = "POST" then for each fld in request.form fldParts = split(fld, "_") if ubound(fldParts) = 1 and fldParts(0) = "txtNavn" then navnValue = replace(request.form("txtNavn_" & fldParts(1)),"'","''") adresseValue = replace(request.form("txtAdresse_" & fldParts(1)),"'","''") sql = "UPDATE tabel " & _ "SET navn = '" & navnValue & "'" & _ ", adresse = '" & adresseValue & "'" & _ " WHERE id = " & fldParts(1) objConn.Execute(sql) end if next end if %>
Dette er et eksempel og aldeles utestet, så derfor garanterer jeg ikke for at det fungerer perfekt, men princippet skulle være brugbart, hvis du kan omsætte det til din egen databasestruktur...
if request.servervariables("REQUEST_METHOD") = "POST" then for each fld in request.form fldParts = split(fld, "_") if ubound(fldParts) = 1 and fldParts(0) = "txthold" then holdValue = replace(request.form("txthold_" & fldParts(1)),"'","''") kampeValue = replace(request.form("txtkampe_" & fldParts(1)),"'","''") sql = "UPDATE stilling " & _ "SET hold = '" & holdValue & "'" & _ ", kampe = '" & kampeValue & "'" & _ " WHERE id = " & fldParts(1) Conn.Execute(sql) end if next end if
Det jeg gerne ville have sagt var at feltnavn OG ID skal adskilles af underscore (altså txthold_<%=rs("id")%> og ikke som du gør nu txthold<%=rs("id")%>).
Ja, det er fordi checkbokse opfører sig lidt specielt. Det er nemlig sådan at den kun vil figurere i request.form-collection, hvis den er checked. Det betyder at du nok skal lave en konstruktion á la
Det der sker i den linie er at der checkes på om form-elementet chkudvalg<ID> sammensat med en tom streng giver andet end en tom streng (det vil den kun gøre hvis den er afkrydset og chkudvalg<ID>'s value-attribut har en værdi - som din jo har). Den værdi som ligger i udvalgChecked kan du så som sagt bruge i din update sqlsætning, f.eks. således:
Hmmm... det lyder som om at du har stavet navnet på et af dine felter forkert (og så opfatter databasen det som en parameter der skal udfyldes med en værdi, som den ikke får). Check lige om dine feltnavne er stavet korrekt i den UPDATE-sætning...
<% if udvalg="administration" then RSudvalg = rs("administration")%> <% elseif udvalg="elite" then RSudvalg = rs("elite")%> <% elseif udvalg="webudvalg" then RSudvalg = rs("webudvalg")%> <% end if %>
Det virker fint nok bare det ikke er en checkbox der skal opdateres.
I øvrigt vil jeg da anbefale denne forgreningsstruktur i stedet:
select udvalg case "administration" RSudvalg = rs("administration") case "elite" RSudvalg = rs("elite") case "webudvalg" RSudvalg = rs("webudvalg") case else err.raise 10001, "udvalg ikke specificeret eller har en ukendt værdi." end select
case else-delen er lige medtaget for at fange evt. ulovlige værdier. Det kan godt være du vil håndtere det på en anden måde, men den bør håndteres i situationer som denne (det kunne jo være at der var en fejl i koden - selvom det er totalt usandsynligt ;-))...
<% if request.querystring("ld")="3" then strSQL = "select * from kontakt order by administration" Dim udvalg udvalg="administration" elseif request.querystring("ld")="4" then strSQL = "select * from kontakt order by elite" udvalg="elite" elseif request.querystring("ld")="5" then strSQL = "select * from kontakt order by webudvalg" udvalg="webudvalg" end if %>
Det var rart (selvom alt var prøvet, var der alligevel en løsning ;D).
Mange tak for point :)
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.