Jag är i behov att sortera inskrivna uppgifter i ett formulär. du skulle ju kunna sätta id på dom och sortera. Exempelvis att id firstname blir 07_firstname, 08_lastname osv. Sen använder du en bubblesort eller quicksort för att sortera om dessa, och avsluta med att hämta värdet för dom i rätt ordning. Det finns ju inget som säger att datat skickas ifrån webbläsaren i den ordning fälten ligger i dokumentet, det är ju upp till webbläsaren. Vad jag vet finns det heller inte något som säger att fälten hämtas till Form-samlingen i den ordning de ligger i html-headern heller. I teorin kan de alltså komma i vilken ordning som helst. JAg tycker det är fel av dig att använda For Each. Du bör kontrollera att obligatoriska fält är ifylda med giltliga värden. Att använda for each tar dessutom med fält du inte laggt till. Ger en person möjlighet att skicka med vilka fält de vill. Anledningen till att jag använder for each är jag använder den som en generell mail-formaterare till ett flertal olika formulär och då vet jag ju inte vilka fält som skickas in förutom de förutbestämda som jag nämnde. Om du gör en generell lösning tycker jag du bör lägga en databas bakom. För den kan du ange vilka fält som ingår i ett formulär. Då får dessutom möjlighet att dynamiskt skapa hur många formulär mallar du vill. Du kan dessutom lägga till validering och sortering av fälten.Sortera Request.Form
Det vill säga sortera utskriften av Request.Form i en förutbestämd ordning.
Antag att man (rent hypotetiskt ;-) ) har ett ansökningsformulär med ett 20-tal uppgifter som man vill ta emot och behandla. Detta formulär skickas idag med mail (CDONTS). Problemet är att sorteringen verkar vara något skum. Sorteringen av uppgifterna följer INTE ordningen som <INPUT>-objekten ligger på asp-sidan.
Frågan då: kan man sortera innehållet i en FORM-samling på något sätt?
Idag läses FORM-samlingen in mha en <i>for each</i>-sats som sorterar ut fördef. fält (ex. mailadress, subject osv) och för övriga fält lägger i mailets BODY.Sv: Sortera Request.Form
Sv: Sortera Request.Form
Alltså får du sortera värdena efter att du tagit emot dem för att få dem i någon speciell ordning.
Ett enkelt sätt att sortera dem är att använda ett recordset-objekt:
http://www.guffa.com/Programming_archive.asp?id=18Sv: Sortera Request.Form
Jag tycker därför det är bäst at du läser ut värden av de fält du vet finns:
<code>
Dim strBody
Dim strFirstName
Dim strLastName
Dim strEMail
strFirstName = Trim(Request.Form("firstname"))
strLastName = Trim(Request.Form("lastname"))
strEMail = Trim(Request.Form("email"))
'osv...
'Ev. Validering
strBody = "Du har skickat följande information till oss:" & vbCrLf & _
"Förnamn: " & strFirstName & vbCrLf & _
"Efternamn: " & strLastName & vbCrLf & _
"E-Postadress: " & strEMail & vbCrLf & _
'Osv...
</code>Sv: Sortera Request.Form
Jag misstänkte att det inte fanns någon egentlig identifiering för fälten. Det enklaste verkar vara att gå på att "id-märka" fälten i namnen enligt Pelles modell.
Förstod inte riktigt hur sortering i RecordSet skulle hjälpa i detta fall, men jag skall ändå kolla lite nogrannare på det.Sv: Sortera Request.Form
Deta tycker jag låter som en mycket bättre lösning än vad som tidigast förekommit. JAg kan hjälpa dig lite på traven om du önskar.
Det göra jag eller någon annan lättast om du bifogar befintlig kod.
/Mvh, Andreas Hillqvist - Fokusera inte på att finna lösningen. Utan fokusera på att finna problemet. Ett problem löser du bäst genom att angripa källan. Inte korrigera det i efterhand.