Avatar billede lizardine Nybegynder
16. april 2003 - 11:35 Der er 10 kommentarer og
1 løsning

Request.Form.Count Sortering

Hey

Jeg har en form hvor jeg skal indtaste en række numeriske værdier. F.eks. 1, 3, 6, 2, 8, 5

Når jeg så løber min form igennem ved hjælp af Request.Form.Count så vil jeg gerne have at der sorteres efter de indtastede værdier.

Mit nuværende script skriver værdierne ud i den rækkefølge de er indtastet.

For i = 1 To Request.Form.Count

    Response.Write Request.Form.Item(i) & "<br>"

Next

Resultat er: 1<br>3<br>6<br>2<br>8<br>5

Men jeg vil gerne have at de kommer ud i en sorteret rækkefølge. F.eks. 1<br>2<br>3<br>5<br>6<br>8

Håber at der er nogle der kan hjælpe.
Avatar billede erikjacobsen Ekspert
16. april 2003 - 11:41 #1
Utestet:


dim a()
redim a(Request.Form.Count)

For i = 1 To Request.Form.Count
  a(i-1)=Request.Form.Item(i)
Next

for i=ubound(a)-1 to lbound(a) step -1
  for j=0 to i
    if a(j)>a(j+1) then tmp=a(j):a(j)=a(j+1):a(j+1)=tmp
  next
next
for i=lbound(a) to ubound(a)
  response.write a(i) & "<br>"
next
Avatar billede medions Nybegynder
16. april 2003 - 11:41 #2
Hmm hjælper det hvis du gør sådan her:

For Each Item In Request.Form
  Response.Write(Item & " " & Request.Form(Item))
Next

//>Rune
Avatar billede erikjacobsen Ekspert
16. april 2003 - 11:42 #3
Dog skal
  a(i-1)=Request.Form.Item(i)
nok være
  a(i-1)=cint(Request.Form.Item(i))
Avatar billede lizardine Nybegynder
16. april 2003 - 11:51 #4
erikjacobsen >> Kanon. Dog bliver tallet '1' skrevet ud 2 gange.

Jeg har sat i = 2 i sætningen: For i = 1 To Request.Form.Count

Er den en holdbar løsning.
Avatar billede lizardine Nybegynder
16. april 2003 - 12:00 #5
..og lige et tillægsspørgsmål - jeg ønsker også at få Form.Key værdien med så der retuneres
FormFelt1 = 1
FormFelt2 = 3
FormFelt3 = 6
osv..
Avatar billede erikjacobsen Ekspert
16. april 2003 - 12:13 #6
Nåh, du skal nok

  redim a(Request.Form.Count-1)

Det andet er da en smule besværligt.... Hvad skal du bruge det til?
Avatar billede erikjacobsen Ekspert
16. april 2003 - 12:17 #7
Fortsat utestet:


dim a()
redim a(Request.Form.Count-1)

dim b()
redim b(Request.Form.Count-1)


For i = 1 To Request.Form.Count
  a(i-1)=Request.Form.Item(i)
  b(i-1)=Request.Form.Key(i)
Next

for i=ubound(a)-1 to lbound(a) step -1
  for j=0 to i
    if a(j)>a(j+1) then
      tmp=a(j):a(j)=a(j+1):a(j+1)=tmp
      tmp=b(j):b(j)=b(j+1):b(j+1)=tmp
    end if
  next
next
for i=lbound(a) to ubound(a)
  response.write b(i) & " = " & a(i) & "<br>"
next
Avatar billede lizardine Nybegynder
16. april 2003 - 12:40 #8
Kanon - mange tak erikjacobsen. Vil du komme med en besvarelse så jeg kan tildele dig dine point.
Avatar billede erikjacobsen Ekspert
16. april 2003 - 12:57 #9
nej tak, jeg samler ikke på point
Avatar billede the_bma_man Nybegynder
21. maj 2003 - 14:55 #10
Så må du bare lige selv lægge et svar, give dig selv point og lukke spørgsmålet.
Avatar billede erikjacobsen Ekspert
21. maj 2003 - 15:08 #11
Du må gerne tage pointene selv - men hvis du ikke vil, så kan du
give dem til mig. Jeg er ligeglad ;:)
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