Avatar billede testpilot_dk Nybegynder
09. april 2006 - 11:55 Der er 12 kommentarer og
2 løsninger

Løkke hvor alle ens input felter håndteres

Hej!

Jeg ønsker at lave en side hvor der er x antal ens input felter, felternes værdier ønsker jeg at smide i en database!

Men hvordan laver jeg løkken som læser samtlige input felter!
Avatar billede softspot Forsker
09. april 2006 - 11:58 #1
Du kan gennemløbe alle felter i en form med en for each...next-løkke, f.eks. således:

for each fld in Request.Form
  Response.Write fld & " = " & Request.Form(fld) & "<br>"
next

som du kan se indeholder fld altså navnet på det aktuelle form-felt og det kan du så bruge til at identificere hvor i databasen feltets værdi skal gemmes (eksempelvis).
Avatar billede eagleeye Praktikant
09. april 2006 - 11:59 #2
Du kan lave noget som dette:

for each key in Request.Form
  Response.Write key & " =  " & Request.Form(key)  &"<br>"

next
Avatar billede sth Novice
09. april 2006 - 12:01 #3
for each key in request.form
    if key ="Send" then
    else
        Response.Write "<BR>"
        Response.Write &key&
        Response.Write "&nbsp;&nbsp;&nbsp;"
        Response.Write request.form(key)
    end if
next
Avatar billede sth Novice
09. april 2006 - 12:01 #4
ok jeg er bare ikke hurtig nok :-)
Avatar billede testpilot_dk Nybegynder
09. april 2006 - 13:27 #5
3 gode svar på meget kort tid, jeg synes nu at softspot skal have point!

ellers må i lige diskutere indbyrdes, hvis de skal deles?
Avatar billede sth Novice
09. april 2006 - 15:10 #6
Det er der nok ingen der kan være uenige med dig i
Avatar billede softspot Forsker
09. april 2006 - 15:12 #7
Bare del dem, der er vist ikke nogen der har nået at kopiere fra andre, så det er fair nok at betragte alle svar som ligeværdige (selvom sth's eksempel også tager højde for at den kontrol som hedder "Send" ikke tages i betragtning - det forudsætter naturligvis at din submit-knap hedder "Send" ;-)).
Avatar billede eagleeye Praktikant
09. april 2006 - 16:40 #8
>> jeg synes nu at softspot skal have point!
- helt i orden med mig :)
Avatar billede softspot Forsker
09. april 2006 - 16:57 #9
Tak for point :)
Avatar billede testpilot_dk Nybegynder
20. april 2006 - 17:39 #10
jeg har lige et spørgsmål!

Jeg har gjort som sth skriver, men jeg får det hele ud på en linje, hvorfor gør jeg det!

altså min kode ser sådan her ud!
for each fld in Request.Form
    if fld = "Send" then
    else
        response.Write("<br>")
        Response.Write fld & " = " & Request.Form(fld) & "<br>"
        strSQL = "UPDATE tabel set antal = " & Request.Form(fld) & " where id = " & counter & ";"
        counter = counter + 1
        Response.Write(strSQL & "<br>")
    end if
'    oConn.Execute(strSQL)
next

og mit output ser således ud:
textfield = , , , , , , , , , , , , , , , , , , , , , , , , , , 345, , , , , , , , , , ,
UPDATE tabel set antal = , , , , , , , , , , , , , , , , , , , , , , , , , , 345, , , , , , , , , , , where id = 0;
Avatar billede testpilot_dk Nybegynder
20. april 2006 - 17:42 #11
hvad nu hvis jeg kun vil have dem som der står noget i!
Avatar billede softspot Forsker
20. april 2006 - 18:23 #12
Din løkke får da kun indholdet af det sidste felt i formularen med, da du overskriver din strSQL for hvert felt du læser. Hvad forventer du der skal ske??

Hvis du kun vil have de felter der har indhold, så skal du lægge en betingelse omkring udskrivningen af feltet:

for each fld in Request.Form
  if fld = "Send" then
  else
    if Request.Form(fld) <> "" then
      Response.Write("<br>")
      Response.Write fld & " = " & Request.Form(fld) & "<br>"
      strSQL = "UPDATE tabel set antal = " & Request.Form(fld) & " where id = " & counter & ";"
      counter = counter + 1
      Response.Write(strSQL & "<br>")
    end if
  end if
' oConn.Execute(strSQL)
next
Avatar billede testpilot_dk Nybegynder
20. april 2006 - 20:10 #13
Jamen, det output jeg får, er det ikke for alle mine felter!

Det er jeg nemlig temmelig sikker på, men den laver bare ikke nye linjer for hvert gennemløb!
Avatar billede eagleeye Praktikant
20. april 2006 - 21:10 #14
Det ser ud som om at alle dine input felter hedder det samme så vil fld være en komma+mellemrums sepereret liste:  1, 2, 3

Antallet kan findes med: Request.Form(fld).Count
og så skal man loop igennem fld og hente væriden med Request.Form(fld)(tal), og hvis den også skal springe over de tomme men den skal vel stadig tælle counter op selvom en værdi er tom? :


for each fld in Request.Form
    if fld = "Send" then
    else
        nItems = Request.Form(fld).Count
        for i = 1 to nItems
          if trim(Request.Form(fld)(i)) <> "" then
            response.Write("<br>")
            Response.Write fld & " = " & Request.Form(fld)(i) & "<br>"
            strSQL = "UPDATE tabel set antal = " & Request.Form(fld)(i) & " where id = " & counter & ";"
            Response.Write(strSQL & "<br>")
          end if
          counter = counter + 1
      next
    end if
'    oConn.Execute(strSQL)
next
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