18. december 2005 - 16:09Der er
19 kommentarer og 1 løsning
Mulighed for at rediger i HELE min liste på en gang
Hej Alle sammen,
ville høre om man der er mulighed for at rediger i hele liste, og ikke kun én af gang via. et id . jeg kode ser sådan ud pt
<% id = cint(Request.QueryString("id")) set rs = conn.execute("SELECT * FROM film WHERE id="&id) if rs.eof then response.end %>
Det så jeg gå efter er: mulighed for at rediger i alle mine poster på én gang - og derefter klik på submit knappen, også herefter skulle alle lister være opdatere.
Man kan jo nøjes med at bruge: set rs = conn.execute("select * from film")
Og så kunne jeg forestille mig en loop, der henter den nuværende rs med de tilhørende data, og smider den i de rette felter.
Når man så submitter (onsubmit) afvikles en funktion (lavet i JavaScript), som samler de respektive data, i 1 felt per emne, separaret af et (eller flere) specialtegn.
Du kan så via ASP splitte dataene op, via dette/disse specialtegn.
I min har, er der noget jeg kalder "lokal-kode". Det er den kode, jeg har brugt lokalt (uden database), da jeg ikke har en database.
Der er også noget der hedder "database-kode". Det er kode du kan bruge, når du bruger databasen.
Opret 2 filer.
- index.asp (eller "test.asp", det er lige meget) - opdater.asp (hvis du ændre dette navn, skal du også ændre det i "action" i formen i "index.asp"/"test.asp")
<script type="text/JavaScript"> var antal = <% response.write t %>; var n = ""; var a = "";
function ret(f) { var el = f.elements; for(i=0; i < antal; i++) { if (el[i].type == "text") { // vi skal kun kigge på type="text" n = n + el("navn" + i).value + ";:;"; a = a + el("alder" + i).value + ";:;"; } } document.frmRediger.navne.value = n; document.frmRediger.aldre.value = a;
return true; } </script>
<% 'end if ' database-kode %>
I opdater.asp indsætter du følgende kode:
<%
if request.servervariables("request_method") = "POST" then ' check om formen er submittet ' yep.. formen er submittet
Response.write "Der er følgende opdateringer:<br><br>" & vbCrLf & vbCrLf
dim n, a, xn n = request.form("navne") a = request.form("aldre") xn = request.form("xnavne")
n = split(n, ";:;") a = split(a, ";:;") xn = split(xn, ";:;")
dim i for i = 0 to ubound(n) - 1 response.write "conn.execute(""update TabelNavn set navn = '" & n(i) & "', alder = " & a(i) & " where navn = '" & xn(i) & "'"")" response.write "<br>" & vbCrLf
' Databasen opdateres med: ' conn.execute(update TabelNavn set navn = '" & n(i) & "', alder = " & a(i) & " where navn = '" & xn(i) & "')" next
else ' nope.. den er ikke submittet.. ' brugeren har selv indtastet "opdater.asp" i adressefeltet! ' ' giv brugeren en besked: response.write "Intet at lave, da formen ikke er submittet" end if
%>
Load "index.asp" via din webserver (plejer at være "localhost" eller online). Du kan nu redigere i både navnene og aldrene.
PS: Forskellen på "lokal-kode" og "database-kode" er, at jeg ikke bruger recordset'et (rs("noget-her")) i min lokal-kode, da der ikke er nogen forbindelser til nogen database..
Databasen er "erstattet" af array'ene tNavn og tAlder..
Hvis du fjerner kommentering ('-tegnet) fra de linier, der har "' database-kode" i slutningen, og sætter kommentering ('-tegn) ved de linier, har "' lokal-fil" i slutningen, skulle du gerne kunne bruge databasen.
Oprettelsen af forbindelsen til databasen, skal bare ske inden den første "' database-kode"-linie.
okay, Nu har jeg prøvet at lave en så det passer til mig database, men hvorfor så jeg uploader den, frem kommer hele databasen ¨nå jeg har sat den fra 01 til og med 08
plus min explorer gå ned :(
sådan ser det ud: - set det okay ud eller hvad ?
de to tabeller hedder "fornavn" og "nr" som jeg ønsker et udtræk på...
<% set rs = conn.execute("SELECT * FROM film WHERE nr BETWEEN '01' AND '08'") ' database-kode if rs.bof or rs.eof then ' database-kode response.write "ingen data i databasen" ' database-kode else ' database-kode %> <form name="frmRediger" action="opdater.asp" method="post" onsubmit="return ret(this)"> <% do while not rs.eof ' database-kode 'do while rs <= 5 ' lokal-kode
<script type="text/JavaScript"> var antal = <% response.write t %>; var n = ""; var a = "";
function ret(f) { var el = f.elements; for(i=0; i < antal; i++) { if (el[i].type == "text") { // vi skal kun kigge på type="text" n = n + el("fornavn" + i).value + ";:;"; a = a + el("nr" + i).value + ";:;"; } } document.frmRediger.fornavn.value = n; document.frmRediger.nr.value = a;
return true; } </script>
<% end if %>
håber du kan/vil med så den kan komme til at virke :)
jeg har nu prøvet at ændre din kode, - til tabelnavn "fornavn" & "nr"(som er almindelig tekst) - var der evt. en mulighed for at du kunne rette den til mig ?
- som jeg skriv før, jeg prøvet - men det vil sku ikke virke... :(
set rs = conn.execute("select * from film") if rs.bof or rs.eof then response.write "ingen data i databasen" else %> <form name="frmRediger" action="opdater.asp" method="post" onsubmit="return ret(this)"> <% do while not rs.eof
<script type="text/JavaScript"> var antal = <% response.write t %>; var n = ""; var a = "";
function ret(f) { var el = f.elements; for(i=0; i < antal; i++) { if (el[i].type == "text") { // vi skal kun kigge på type="text" n = n + el("navn" + i).value + ";:;"; a = a + el("alder" + i).value + ";:;"; } } document.frmRediger.navne.value = n; document.frmRediger.aldre.value = a;
return true; } </script>
<% Conn.Close set rs = nothing Set Conn = Nothing
end if %>
*** opdater.asp:
<% Option Explicit
if request.servervariables("request_method") = "POST" then ' check om formen er submittet ' yep.. formen er submittet
Response.write "Der er følgende opdateringer:<br><br>" & vbCrLf & vbCrLf
dim n, a, xn n = request.form("navne") a = request.form("aldre") xn = request.form("xnavne")
n = split(n, ";:;") a = split(a, ";:;") xn = split(xn, ";:;")
dim i for i = 0 to ubound(n) - 1 conn.execute("update film set fornavn = '" & n(i) & "', nr = '" & a(i) & "' where fornavn = '" & xn(i) & "'") response.write "conn.execute(""update film set fornavn = '" & n(i) & "', nr = '" & a(i) & "' where fornavn = '" & xn(i) & "'"")" response.write "<br>" & vbCrLf next
Conn.Close Set Conn = Nothing
else ' nope.. den er ikke submittet.. ' brugeren har selv indtastet "opdater.asp" i adressefeltet! ' ' giv brugeren en besked: response.write "Intet at lave, da formen ikke er submittet" end if %>
Option Explicit tvinger programmøren (mig, dig, osv) til at definere/dimme ALLE variablerne. Så bliver man informeret når man laver stavefejl, da den så ikke kender variablen.
Når man bruger Option Explicit, så SKAL linien være den første i ASP filen. Du har garanteret sat noget ind for den linie..
Flyt linien op, så det er den første i ASP filen.
/theSurfer
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.