Avatar billede Jman Praktikant
13. januar 2004 - 14:50 Der er 10 kommentarer og
1 løsning

Problem med update og variabel checkbox

Jeg har følgende i en loop'et form:
<input type="hidden" name="cusno" value="<%=rs("cusno")%>">
<td><%=rs("cusno")%>&nbsp;</td>
<td><%=rs("cusname")%>&nbsp;</td>
<td><%=rs("contperson")%>&nbsp;</td>
<td><%=rs("cusemail1")%>&nbsp;</td>
<td><%=rs("cusemail2")%>&nbsp;</td>
<td><%=rs("cusemail3")%>&nbsp;</td>
<td align=center><input type="checkbox" name="<%=rs("cusno")%>_kontakt"></td>

I checkboxen genererer jeg et name udfra et kundenummer samt tekststrengen _kontakt.

Når der submittes skal de linier, hvor checkboxen er krydset af opdatere et felt i min DB:

if mode = "Update" then
cusno = request.form("cusno")
if request.form(cusno&"_kontakt") <> "" then
  status = 5
  else
  status = 0
end if

Set dbCusmailContact = CreateObject("ADODB.Connection")
strConn = "DSN=XXXXXXXX;Database=XXXXXXXX;uid=XXXXXXXX;pwd=XXXXXXXX"
dbCusmailContact.Open strConn

SQLstmt = "UPDATE customermail SET CL_contact = " & status & " WHERE cusno = " & cusno
'response.write SQLstmt

dbCusmailContact.Execute (SQLstmt)
Set dbCusmailContact = nothing
Set SQLstmt = nothing

end if %>

Men det vil ikke fungere - jeg får ingen værdier i rewuest.form(cusno&"_kontakt")
Avatar billede Jman Praktikant
13. januar 2004 - 14:59 #1
whoops fandt fejlen - der manglede en value
Avatar billede nute Nybegynder
13. januar 2004 - 15:04 #2
hmmm ...d et skulle ikke være nødvendig, for hvis du har checked din checkbox, så vil værdien 'on' blive sendt over.

/nute
Avatar billede Jman Praktikant
13. januar 2004 - 15:25 #3
hvordan ville du eller gøre det ?
Avatar billede Jman Praktikant
13. januar 2004 - 15:29 #4
jeg får også et problem, så snart jeg har checket 2 eller flere linier af ...
"SQL command not properly ended "
Avatar billede nute Nybegynder
13. januar 2004 - 15:32 #5
hvis jeg laver to forudsætninger:

- at din "method" på din form er 'post'
- at har krydset af din checkbox

Så burde:

Request.form( cusno & "_kontakt" ) = "on"

returnere 'true'

Du har ikke behov for et value felt på din checkbox hvis du kun skal have en true/false værdi

/nute
Avatar billede nute Nybegynder
13. januar 2004 - 15:41 #6
så vil jeg have gjordt det på en helt anden måde. Jeg ville have lavet følgende HTML struktur i din loop:

<td><%=rs("cusno")%>&nbsp;</td>
<td><%=rs("cusname")%>&nbsp;</td>
<td><%=rs("contperson")%>&nbsp;</td>
<td><%=rs("cusemail1")%>&nbsp;</td>
<td><%=rs("cusemail2")%>&nbsp;</td>
<td><%=rs("cusemail3")%>&nbsp;</td>
<td align=center><input type="checkbox" name="check_kontakt" value="<%=rs("cusno")%>"></td>

deretter er du nødt til at din SQL i en loop:

arrCusno = Split( Request.form( "check_kontakt" ), "," )
for i = 0 to UBound( arrCusno )
    SQLstmt = "UPDATE customermail SET CL_contact = " & status & " WHERE cusno = " & arrCusno( i )
    dbCusmailContact.Execute (SQLstmt)
next
Avatar billede Jman Praktikant
13. januar 2004 - 15:45 #7
jeg tester det lige af - hvis det virker opretter jeg et nyt spørgsmål til dig :)
Avatar billede nute Nybegynder
13. januar 2004 - 15:52 #8
ups ... din SQL skal vel måske se sådan ud:

SQLstmt = "UPDATE customermail SET CL_contact = 5 WHERE cusno = " & arrCusno( i )

/nute
Avatar billede nute Nybegynder
13. januar 2004 - 15:55 #9
hmm ... det skal vel også måske fungere på en anden måde ...

du vil opdatere *alle* kunder der ligger i dit formular ? sådan at dem der er krydset af, skal få CL_contact sat til 5 og dem der ikke er krydset af får værdien 0 i CL_contact ?

hvis dette er de eneste to værdier du kan have i CL_contact (0 og 5), så kan du jo køre følgende SQL helt til sidst:

UPDATE customermail SET CL_contact = 0 WHERE CL_contact <> 5

/nute
Avatar billede Jman Praktikant
13. januar 2004 - 16:21 #10
jeg rettede selv 5 ... jeg skal kun opdatere de afkrydsede kolonner, så det er helt fint
Avatar billede nute Nybegynder
13. januar 2004 - 16:25 #11
oki ... godt at høre. jeg var ellers bange for at jeg indvolveret mig i noget jeg ikke kunne komme mig ud af ;-)
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