hehe nej, det gør de nemlig ikke... Og desværre har jeg ikke mulighed for at gøre det på den hårde måde, da det er en dynamisk form, hvor man ikke ved hvor mange felter der er. ;)
Kan du navngive felterne så alfabetisk sortering vil være den korrekte (a_Navn, b_Adresse, c_PostNr fx.) Så kan du foretage alfabetisk sortering i asp, og så finde det virkelige feltnavn med Split(Item.Name, "_")(1)
Det kunne jeg måske, men feltnavnene bliver jo vist i mailen og på en kvittering til kunden, så de skulle jo helst hedde noget der re relevant og brugervenligt.. :)
Jeg har denne kode:: ---------------------------- For Each Item in Request.Form Split(Item, "-")(2) If Left(Item,1) <> "_" Then message = message & "<tr><td valign=top width=200 bgcolor=#E5E5E5><font size=1 face=Verdana, Arial, Helvetica, sans-serif><b>" & Item & "</b></font></td><td width=200 bgcolor=#F8F8F8><font size=1 face=Verdana, Arial, Helvetica, sans-serif>" & Request.Form(Item) & "</font></td></tr>" End If Next ----------------------
Så tror jeg den er der. Sorteringsfunktionen er lidt tung, så bruge den ikke på arrays der er større end nogle hundrede elementer:
if Request.Form <> "" then Redim Preserve ArrUnsorted(-1) for each Item in Request.Form if Instr(1, Item, "_") > 1 then Redim Preserve ArrUnsorted(Ubound(ArrUnsorted)+1) ArrUnsorted(Ubound(ArrUnsorted)) = Item end if next ArrSorted = sortArray(ArrUnsorted) for i = 0 to Ubound(ArrSorted) Response.Write Split(ArrSorted(i), "_")(1) & ": " & Request.Form(ArrSorted(i)) & "<br>" next end if
function sortArray(arrIn) for n = 0 to Ubound(arrIn) lastValue = "¤¤¤¤¤" for i = 0 to Ubound(arrIn) if not lastValue = "¤¤¤¤¤" then thisValue = arrIn(i) if lastValue > thisValue then arrIn(i) = lastValue arrIn(i-1) = thisValue end if end if lastValue = arrIn(i) next next sortArray = arrIn end function
If mailer.SendMail Then Response.Clear Response.Redirect(ok_side) Set mailer = Nothing Else Dim ErrString ErrString = mailer.Response Set mailer = Nothing Response.Clear Response.Redirect(fejl_side) End If %> -----------------------------------
<% 'hent felt Array if Request.Form <> "" then Redim Preserve ArrUnsorted(-1) for each Item in Request.Form if Instr(1, Item, "_") > 1 then Redim Preserve ArrUnsorted(Ubound(ArrUnsorted)+1) ArrUnsorted(Ubound(ArrUnsorted)) = Item end if next ArrSorted = sortArray(ArrUnsorted)
If mailer.SendMail Then Response.Clear Response.Redirect(ok_side) Set mailer = Nothing Else Dim ErrString ErrString = mailer.Response Set mailer = Nothing Response.Clear Response.Redirect(fejl_side) End If
function sortArray(arrIn) for n = 0 to Ubound(arrIn) lastValue = "¤¤¤¤¤" for i = 0 to Ubound(arrIn) if not lastValue = "¤¤¤¤¤" then thisValue = arrIn(i) if lastValue > thisValue then arrIn(i) = lastValue arrIn(i-1) = thisValue end if end if lastValue = arrIn(i) next next sortArray = arrIn end function
ja, for det er arrays vi snakker om og så hedder første element 0 og ander 1 osv.
Du kan også omdøbe felterne så de hedder noget med "_" Af en eller anden grund kan jeg bedst lide det, er der ikke noget med at javascript har et problem med - ??
Jeg ser at du ignorerer felter der starter med _ men det konflikter ikke med mit script, der kun tager sig af felter der har et _ i navnet EFTER første bogstav
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.