Avatar billede hehlers Nybegynder
28. april 2004 - 08:53 Der er 20 kommentarer og
1 løsning

Forms bliver udskrevet tilfældigt

Hejsa

Jeg har en stor form, som sendes via mail. I mailen bruger jeg så "For Each Item in Request.Form" for at fange dem alle også maile dem.

Men de forskellige forms bliver skrevet tilfældigt i mailen og ikke alfabetisk eller i den rækkefølge de er indtastet.

Er der nogle der ved hvordan man kan få det til at stå på en logisk måde??
Avatar billede ldanielsen Nybegynder
28. april 2004 - 09:05 #1
Ja, den hårde måde; ved at nævne dem ved navn:

Navn: <%=Request.Form("Navn")%><br>
Adresse: <%=Request.Form("Adresse")%>

Men jeg har nu aldrig været ude for at formen på den måde bliver blandet, kommer felterne ikke i den rækkefølge som de forekommer i HTML'en?
Avatar billede hehlers Nybegynder
28. april 2004 - 09:10 #2
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. ;)
Avatar billede ldanielsen Nybegynder
28. april 2004 - 09:46 #3
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)
Avatar billede hehlers Nybegynder
28. april 2004 - 09:56 #4
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.. :)
Avatar billede ldanielsen Nybegynder
28. april 2004 - 10:38 #5
Netop, så hvis du "klipper dem over" efter første _ så bliver de jo pæne, ikke?
Avatar billede hehlers Nybegynder
28. april 2004 - 10:53 #6
AAhhhh jo selvfølgelig. :)

Hvordan laver man dem så alfabetiske?
Avatar billede hehlers Nybegynder
28. april 2004 - 11:13 #7
Nu har jeg kaldt de forskellige forms aa-navn, ab-adresse, ac-tlf osv osv.

I min fil som sender mailen har jeg så indsat:    Split(Item.Name, "-")(2)

Men den skriver object required - item
Avatar billede ldanielsen Nybegynder
28. april 2004 - 11:36 #8
Ok, måske skal jeg se koden, men detr skal i  hvert fald være 1 i stedet for 2, og jeg vi da foreslå at bruge _ i stedet for -:

aa_navn, ab_adresse, ac_tlf

Split(Item.Name, "_")(1)

Sortering er en større omgang, vender lige tilbage med noget
Avatar billede ldanielsen Nybegynder
28. april 2004 - 11:43 #9
min fejl, det hedder ikke Item.Name, bare Item
Avatar billede hehlers Nybegynder
28. april 2004 - 11:54 #10
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
----------------------

Også kommer den bare med en typ mismatch.. piv..
Avatar billede ldanielsen Nybegynder
28. april 2004 - 12:15 #11
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
Avatar billede hehlers Nybegynder
28. april 2004 - 12:27 #12
Nu er jeg ikke den store programmerings haj, - sorry. :)

Jeg har mit dokument sendmail.asp, som sender mailen.

Hvordan får man ovenstående kode ind i min kode??

Jeg har min kode her:
------------------------------
<%

' Hent info fra kontaktside:
        modtager    = request.form("_mailto")
        mailserver  = request.form("_mailserver")
        subject        = request.form("_subject")
        ok_side    = request.form("_succesDoc")
        fejl_side  = request.form("_errorDoc")
        email_fra  = "mail@proinfo.dk"
        from_name  = request.form("Name")
       

    set mailer = Server.createObject("SMTPsvg.Mailer")
    'IF Not EmailAddressOK("mail@proinfo.dk") THEN email_fra = "support@proinfo.dk"

    'mailer.RemoteHost = mailserver
    mailer.RemoteHost = "mail.proinfo.dk"
    mailer.FromName = from_name
    mailer.FromAddress = email_fra
    mailer.AddRecipient "DanWatch Pro®", modtager
    'mailer.AddBCC "KES", "kes@proinfo.dk"
    mailer.Subject = subject
    mailer.ContentType = "text/html"
    mailer.CharSet = 2
    mailer.Organization = "ProInfo A/S"
   
   
    mailer.BodyText = "<Html><Head></Head><Body><table>"
    mailer.BodyText = "<tr><td align=left colspan=2 bgcolor=#7DC2DE><font size=2 face=Verdana, Arial, Helvetica, sans-serif><b>" & subject & "</b></font></td></tr>"
   
    For Each Item in Request.Form
        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
   
    mailer.BodyText = "<tr><td align=right colspan=2 bgcolor=#7DC2DE><font size=1 face=Verdana, Arial, Helvetica, sans-serif>" & date & " : " & time & "</font></td></tr>"
    mailer.BodyText = message & "</table></body></html>"

    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
    %>
-----------------------------------
Avatar billede ldanielsen Nybegynder
28. april 2004 - 12:39 #13
Med forbehold:

<%
'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)
   
end if



' Hent info fra kontaktside:
        modtager    = request.form("_mailto")
        mailserver  = request.form("_mailserver")
        subject        = request.form("_subject")
        ok_side    = request.form("_succesDoc")
        fejl_side  = request.form("_errorDoc")
        email_fra  = "mail@proinfo.dk"
        from_name  = request.form("Name")
       

    set mailer = Server.createObject("SMTPsvg.Mailer")
    'IF Not EmailAddressOK("mail@proinfo.dk") THEN email_fra = "support@proinfo.dk"

    'mailer.RemoteHost = mailserver
    mailer.RemoteHost = "mail.proinfo.dk"
    mailer.FromName = from_name
    mailer.FromAddress = email_fra
    mailer.AddRecipient "DanWatch Pro®", modtager
    'mailer.AddBCC "KES", "kes@proinfo.dk"
    mailer.Subject = subject
    mailer.ContentType = "text/html"
    mailer.CharSet = 2
    mailer.Organization = "ProInfo A/S"
   
   
    mailer.BodyText = "<Html><Head></Head><Body><table>"
    mailer.BodyText = "<tr><td align=left colspan=2 bgcolor=#7DC2DE><font size=2 face=Verdana, Arial, Helvetica, sans-serif><b>" & subject & "</b></font></td></tr>"
   
    for i = 0 to Ubound(ArrSorted)

            message = message & "<tr><td valign=top width=200 bgcolor=#E5E5E5><font size=1 face=Verdana, Arial, Helvetica, sans-serif><b>" & Split(ArrSorted(i), "_")(1) & "</b></font></td><td width=200 bgcolor=#F8F8F8><font size=1 face=Verdana, Arial, Helvetica, sans-serif>" & Request.Form(ArrSorted(i)) & "</font></td></tr>"
       
    Next
   
    mailer.BodyText = "<tr><td align=right colspan=2 bgcolor=#7DC2DE><font size=1 face=Verdana, Arial, Helvetica, sans-serif>" & date & " : " & time & "</font></td></tr>"
    mailer.BodyText = message & "</table></body></html>"

    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

    %>
Avatar billede hehlers Nybegynder
28. april 2004 - 12:51 #14
Ok thx, nu bliver mailen da sendt afsted, men der står desværre kun overskriften samt datoen. :)
Avatar billede ldanielsen Nybegynder
28. april 2004 - 12:53 #15
hedder felterne aa_Navn eller aa-Navn? Det første er det jeg regner med at du skal bruge
Avatar billede hehlers Nybegynder
28. april 2004 - 12:59 #16
hmm ok, de hedder aa-navn :)
Avatar billede hehlers Nybegynder
28. april 2004 - 13:14 #17
Jeg retter vel bare til "-" istedet for "_". SKal der stå (2) istedet for (1)??
Avatar billede ldanielsen Nybegynder
28. april 2004 - 13:36 #18
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
Avatar billede hehlers Nybegynder
28. april 2004 - 13:43 #19
SÅ virker det... Tusind takker... :)
Og nogle velfortjente point, - du burde faktisk have flere... ;)
Avatar billede hehlers Nybegynder
28. april 2004 - 13:46 #20
Må jeg forresten gerne linke til et andet spørgsmål, som jeg gerne vil have lidt hjælp til.

Det er også lidt vedrørende dette...
Avatar billede ldanielsen Nybegynder
28. april 2004 - 14:15 #21
naturligvis ...
og tak!
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