Avatar billede madssch Nybegynder
23. juni 2006 - 10:16 Der er 7 kommentarer og
1 løsning

For Each

Hej Eksperter,

Jeg har lavet en "formular designer", hvor man kan opbygge sin egen kontaktformular, bestillingsformular eller lignende.

Ved submit af formen sendes dens indhold til en valgt modtager via e-mail. Hertil bruger jeg nedenstående kode:

    For Each Element In Request.Form
   
        If Element <> "Submit" And Element <> "Reset" And Element <> "ReturnURL" And Element <> "Recipient" Then
   
            JMail.Body = JMail.Body & Element & ": " & Request.Form(Element) & vbCrLf & vbCrLf
           
        End If
   
    Next

Mit problem er, at rækkefølgen på elementerne i e-mailen ikke er den samme som på websitet. Der er - så vidt jeg kan se - ingen struktur i måden det står på i e-mailen.

Kender nogen til denne problemstilling - eller endnu bedre - har nogen en løsning?

På forhånd tak!
Avatar billede madssch Nybegynder
23. juni 2006 - 10:20 #1
Eksempel:

Rækkefølge på web:

- Virksomhed
- Adresse
- Postnr
- By
- Kontaktperson
- Kundenr.
- CVR-nr.
- Reg.nr.
- Kontonr.
- Jeg vil gerne tilmeldes leverandørService


Rækkefølge i e-mail:

- Adresse
- Tilmelding til leverandørservice
- Virksomhed
- By
- Postnr.
- Kontaktperson
- CVR-nr.
- Reg.nr.
- Kundenr.
- Kontonr.
Avatar billede softspot Forsker
23. juni 2006 - 11:01 #2
Du kan lave en skabelon til din mail hvor du sætter den op (formaterer) på forhånd og så udskifter felterne fra formularen når den skal sendes. På den måde har du fuld kontrol over layout.

Skabelonen kunne se nogenlunde således ud:

- Adresse: #adresse#
- Tilmelding til leverandørservice: #tilmelding#
- Virksomhed: #virksomhed#
- By: #by#
- Postnr.: #postnr#
- Kontaktperson: #kontaktperson#
- CVR-nr.: #CVRnr#
- Reg.nr.: #RegNr#
- Kundenr.: #kundenr#
- Kontonr.: #kontonr#

koden der bygger mailen op, kunne så se således ud:

skabelon = "<skabelonen overnfor som streng>"
For Each Element In Request.Form
  If Element <> "Submit" And Element <> "Reset" And Element <> "ReturnURL" And Element <> "Recipient" Then
    skabelon = replace(skabelon, "#" & Element & "#", Request.Form(Element)
  End If
Next
JMail.Body = skabelon

Navnene i #..# skal naturligvis matche de navne du angiver i formularen og felterne skal helst findes i formularen hvis de findes i skabelonen, ellers ser det lidt tåbeligt ud for modtageren...
Avatar billede madssch Nybegynder
23. juni 2006 - 12:35 #3
Det ville man normalt godt kunne, men som sagt er det en "formular designer".

Der kan man - som ordet siger - designe sine egne formularer. Det vil sige, at jeg aldrig kan vide, hvilke felter der indgår i formen og jeg kender dermed heller ikke deres navn. Derfor benytter jeg For...Each metoden.

Som du selv siger, kan jeg kun replace, når jeg ved, hvad jeg skal replace...  :)

Iøvrigt - kendte jeg navnene, kunne jeg jo med fordel benytte Request eller Request.Form.

Har jeg misforstået din kommentar må du endelig sige til.
Avatar billede softspot Forsker
23. juni 2006 - 12:52 #4
Nej, du har ret i at dynamikken er en udfordring for min metode - det er ikke den mest generiske metode jeg har skitseret. Dog synes jeg stadig min metode har en vis berettigelse (uden at jeg har yderligere behov for at overtale dig til at benytte den), for du ved vel som formdesigner hvilke felter du ender med at putte på din form, og så kan du vel også designe din mailskabelon i overensstemmelse med den formular hvortil den skal benyttes. Dette tillader stadig en vis dynamik, idet du som udvikler af systemet jo ikke ved hvilke felter brugeren sætter op, men hvis brugeren både definerer formularen og mailskabelonen, så hænger det sammen igen...

Jeg er klar over at dette giver noget dobbeltarbejde til brugeren, men på den anden side synes jeg jo også det giver noget frihed. Du kan evt. autogenerere et udgangspunkt som brugeren så kan rette i.
Avatar billede madssch Nybegynder
23. juni 2006 - 13:01 #5
Det kan du nok godt have ret i.

Dit forslag vil muligvis virke, men jeg vil nok foreslå en for brugeren nemmere metode.
Avatar billede softspot Forsker
23. juni 2006 - 13:15 #6
Ja, hvordan du rent faktisk implementerer mailskabelonen er jo et spørgsmål om hvor god usability du ønsker, men konceptet behøves ikke være anderledes...
Avatar billede madssch Nybegynder
11. september 2006 - 16:07 #7
Da jeg stadig ikke har fundet en løsning på dette - og efter at have læst din kommentar igen - prøver jeg lige at skitsere scenariet.

Brugeren kan selv tilføje felter at typen text, textarea, radio, checkbox, submit og reset. Der er ingen begrænsninger overhovedet.

Ved indsættelse at f.eks. et alm. tekstfelt, bliver der spurgt om et navn. Navnet kunne være "Navn", "Adresse" eller andet, som indikerer, hvad der forventes at blive indtastet i feltet.

Ved afsendelse løber jeg så igennem formularens elementer med For...Each metoden:

For Each Element In Request.Form

    JMail.Body = JMail.Body & Element & ": " & Request.Form(Element) & vbCrLf

Next

Derfor kan jeg ikke se, hvordan jeg på nogen mulig måde kan designe en skabelon til formålet..?

Gode råd eller en alternativ metode til behandling af data modtages meget gerne!

På forhånd tak!
Avatar billede madssch Nybegynder
18. januar 2007 - 18:45 #8
Der var faktisk en løsning:

For iFormElement = 1 To Request.Form.Count()
       
    Request.Form.Key(iFormElement) & ": " & Request.Form.Item(iFormElement)

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