12. januar 2009 - 10:08Der er
6 kommentarer og 1 løsning
checkboxe i en form - og en løkke
Hej,
Jeg har en række checkboxe i en form, som jeg gerne vil afstemme på en gang med min afstem alle-knap Men funktionaliteten kan jeg ikke få til at virke ...
if request.querystring("db")="afstem" then
dim thisvalue For Each afstemt in Request.form 'thisvalue = request.form(chk)
if request.form(chk) = "on" then thisvalue = 1 else thisvalue = 0 end if
SQL = "UPDATE entries SET afstemt = '"&thisvalue&"' WHERE id=" +Cstr(chk)&" " Conn.Execute(SQL) response.write(SQL) next response.redirect "admin_afstemt.asp?afstem=ok&&sort=teacher&type="&hvilken
end if
OG formen: <form name="asftemning" method="POST" action="admin_afstemning.asp?db=afstem&sort=teacher">
bla bla ...
<td bgcolor="#eeeeee" align="center"><input name="<%=visrs("id")%>" type="checkbox" <%If visrs("afstemt") = True Then Response.Write " CHECKED" End If %></td>
I ASP indeholder request.form("data") alle de afkrydsede værdier. Din ASP kode kan derfor ændres til noget ala: conn.execute("update entries set afstemt=1 where id in("& request.form("data") &")") conn.execute("update entries set afstemt=0 where id not in("& request.form("data") &")")
hmm ... jeg kan godt se scriptet, men jeg er stadig i tvivl om formen. min form er jo dynamisk:
</tr> <% do until visRs.EOF bla bla <input name="<%=visrs("id")%>" type="checkbox" <%If visrs("afstemt") = True Then Response.Write " CHECKED" End If %>
<% visRs.movenext loop %>
Det er lidt for langhåret til mig ... jeg kan ikke gennemskue formen
eller rettere .... det er nu asp'en som driller lidt ...
conn.execute("update entries set afstemt=1 where id in("& request.form("data") &")") conn.execute("update entries set afstemt=0 where id not in("& request.form("data") &")")
det virker ikke synes jeg ...
jeg har fået form og script til at virke ... tak for det ... det kunne være rart med lidt hjælpe til asp'en også :)
du mener altså, at jeg ikke skal lave en for each? hmm jeg forstår det ikke helt ...
Checkbokse fungere på den måde at de kun sender værdien fra de bokse som er afkrydset. Dvs. at afkrydser du boks 1 og 4, så indeholder request.form("data") værdien "1, 4". Denne opstilling (komma separeret værdier) kan databaser bruge i IN() funktionen. Resultatet af handlingen bliver derfor:
update entries set afstemt=1 where id in(1, 4) update entries set afstemt=0 where id not in(1, 4)
Har du husket at få value værdien på checkboksene?? Altså sådan: <input name="data" type="checkbox" <%If visrs("afstemt") = True Then Response.Write " CHECKED" %> value="<%=visrs("id")%>">
Eneste problem du kan opleve er hvis ingen checkbokse er afkrydset. Det kan databasens in() funktion ikke håndtere, så et tjek for data er faktisk nødvendigt:
if request.form("data") <> "" then conn.execute("update entries set afstemt=1 where id in("& request.form("data") &")") conn.execute("update entries set afstemt=0 where id not in("& request.form("data") &")") else 'Ingen afkrydset. Sæt alle til 0 conn.execute("update entries set afstemt=0") end if
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.