Avatar billede radda Nybegynder
12. januar 2009 - 10:08 Der 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>


</tr>
<% visRs.movenext
  loop
%>
<td colspan="3"><input class="nyhedtekst" type="submit" value="Afstem alle"></form>


kan en hjælpe ?

vh
R
Avatar billede fennec Nybegynder
12. januar 2009 - 11:19 #1
Du skal have ændret måden din kode fungere på så HTML siden er sådan:

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function checkAll(objEle, fName)
{
    obj = document.getElementsByName(fName)
    for(f=0;f<obj.length;f++)
        obj[f].checked=objEle.checked;
}
//-->
</SCRIPT>

<form name="myForm" method="Post" action="">
<input type="Checkbox" name="all" value="ON" onClick="checkAll(this, 'data')">All<br>
<input type="Checkbox" name="data" value="1">1<br>
<input type="Checkbox" name="data" value="2">2<br>
<input type="Checkbox" name="data" value="3">3<br>
<input type="Checkbox" name="data" value="4">4<br>
</form>

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") &")")
Avatar billede radda Nybegynder
12. januar 2009 - 14:09 #2
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

har du et bud?
Avatar billede radda Nybegynder
12. januar 2009 - 15:21 #3
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 ...

R
Avatar billede fennec Nybegynder
13. januar 2009 - 09:07 #4
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
Avatar billede radda Nybegynder
14. januar 2009 - 16:04 #5
helt perfekt ... du havde ret - der var value, som drillede ...

mange tak - det virker helt perfekt ...

smid et svar, så honorerer jeg :)

vh
R
Avatar billede fennec Nybegynder
14. januar 2009 - 16:14 #6
.o) <-- One Eyed Jack
Avatar billede radda Nybegynder
14. januar 2009 - 16:18 #7
great ... thx
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