Avatar billede Laitings Nybegynder
17. marts 2002 - 13:20 Der er 7 kommentarer og
1 løsning

Form, SQL og loop! FUCK!!

Her er en lidt tricky fætter som volder mig sindsygt mange problemer!!!

Jeg har en post form med en masse checkboxes, hvis navne er defineret ved et udtræk fra en database.

"<input type='checkbox' name='" & rs("BandID") & "' value='checkbox'>

På den side som formen sender til vil jeg gerne have at ASP'en registrere om checkboxene er hakket af. Jeg har prøvet med følgende kode, men det lader ikke til at fungerere: (HAR PRØVET AT GØRE DET SÅ OVERSKUELIGT SOM MULIGT, MEN SKRIV HVIS NOGET SKAL UDDYBES!)

<%
SQL2 = "SELECT MAX(BandID) as Bandmax FROM BandTabel"
SET rs2 = myConn.Execute(SQL2)

Dim t
t = 2
Do
 
  ' Hvis checkbox er hakket af
  if Request.Form(t) = "checkbox" then
 
  ' Vælg bandnavn hvor BandID er lig t
  SQL3 = "SELECT Bandnavn AS Navn from BandTabel WHERE BandID = " & t & ""
  rs3 = myConn.Execute(SQL3)
 
  ' Udskriv bandnavn
  Response.Write rs3("Navn") & "<br>"
  t = t + 1
 
  'Hvis checkbox ikke er hakket af læg én til counter
  else
  t = t + 1

  ' Loop så længe counter er lavere en højeste BandID
loop while t < rs2("Bandmax")

%>

Jeg får en fejlmeddelelse der hedder:
Microsoft VBScript compilation (0x800A040E)
'loop' without 'do'

- og det kan jeg simpelthen ikke give den ret i! :-)
Avatar billede arriva Nybegynder
17. marts 2002 - 13:22 #1
du har glemt en end if i din if sætning....
Avatar billede Laitings Nybegynder
17. marts 2002 - 13:27 #2
Ja det var sgu' ikke lige for kløgtig fra min side! :-) Men nu er jeg tilbage til min gode gamle fejl som jeg har set 117.000.000 gange før:

Request object, ASP 0105 (0x80004005)
An array index is out of range.

fejlen ligger i liinjen med "if Request.Form..."
Avatar billede arriva Nybegynder
17. marts 2002 - 13:29 #3
request.form ("t") = "checkbox"
ellers siger du at det er et array...
Avatar billede Laitings Nybegynder
17. marts 2002 - 13:36 #4
Cool! Nu kommer der ingen fejl men der kommer desværre heller ingen output på den næste side selvom flere af checkboxene er hakket af!?!?

...men nu tror den da også at den skal finde en checkbox der hedder t...eller hvad?
Avatar billede arriva Nybegynder
17. marts 2002 - 13:38 #5
ja, du skal self. huske at skrive samme navn begge steder...
Avatar billede Laitings Nybegynder
17. marts 2002 - 13:46 #6
Det går jo ikke. Formene har navne som rs("BandID") hvilket giver et nummer. Fx. 56.
Når t så counter til 56 tjecker den om værdien er "checkbox" og udskriver det respektive navn! Forstår du eller er det en omgang ævl!? :-)
Avatar billede arriva Nybegynder
17. marts 2002 - 13:57 #7
ja, så misforstod jeg for... så prøv eventuelt:
request.form(""&t&""), den er lidt tricky... ellers må du lige kalde dem noget, f.eks. request.form("checkbox" & t)
Avatar billede Laitings Nybegynder
17. marts 2002 - 14:06 #8
Du er for hård gamle! Det funkede med request.form(""&t&"")!!
1000 tak for hjælpen!


Til alle interesserede, altså færdig kode:

<%
Response.Write "<input type='checkbox' name='" & rs("BandID") & "' value='checkbox'>"
%>

<%
SQL2 = "SELECT MAX(BandID) as Bandmax FROM BandTabel"
SET rs2 = myConn.Execute(SQL2)

Dim t
t = 2
Do
 
  ' Hvis checkbox er hakket af
  if Request.Form(""& t &"") = "checkbox" then
 
  ' Vælg bandnavn hvor BandID er lig t
  SQL3 = "SELECT Bandnavn AS Navn from BandTabel WHERE BandID = " & t & ""
  rs3 = myConn.Execute(SQL3)
 
  ' Udskriv bandnavn
  Response.Write rs3("Navn") & "<br>"
  t = t + 1
 
  'Hvis checkbox ikke er hakket af læg én til counter
  else
  t = t + 1
end if
  ' Loop så længe counter er lavere en højeste BandID
loop while t <= rs2("Bandmax")

%>
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