Avatar billede annettef Nybegynder
28. september 2004 - 08:39 Der er 10 kommentarer og
1 løsning

Hvordan splittes indhold i hidden field op?

Hej Eksperter

Jeg har en side hvorpå jeg har en række hidden fields. Disse fields indeholder en række oplysninger om nogle varer.

Her er et udsnit af min kode:
--------
rsProd.MoveFirst
            while not rsProd.EOF
                rsProdInfo.MoveFirst
                rsProdInfo.Find "vareid = " & rsProd("vareid")
                intProdID = rsProd("vareid")
                strProdName = rsProdInfo("titel")
                intPrice = formatNumber(rsProdInfo("pris"), 2)
                intQuant = rsProd("antal")
                intExtPrice = formatNumber((intPrice * intQuant), 2)
                intTotal = intTotal + intExtPrice
%>
                <tr>
                    <td width="13%" align="left" valign="middle" nowrap><font face="Verdana" size="1"><%= intQuant %></font></td>
                    <td width="13%" align="left" valign="middle" nowrap><font face="Verdana" size="1"><%= intProdID %></font></td>
                    <td width="44%" align="left" valign="middle" nowrap><font face="Verdana" size="1"><%= strProdName %></font></td>
                    <td width="15%" align="right" valign="middle" nowrap><font face="Verdana" size="1"><%= intPrice %></font></td>
                    <td width="15%" align="right" valign="middle" nowrap><font face="Verdana" size="1"><%= intExtPrice %></font></td>
                </tr>
                <input type="hidden" name="strOrderItem" value="<%= intProdID %>,<%= intQuant %>">
                <input type="hidden" name="intQuant" value="<%= intQuant %>">
                <input type="hidden" name="StrProdName" value="<%= strProdName %>">
                <input type="hidden" name="intPrice" value="<%= intPrice %>">
                <input type="hidden" name="intExtPrice" value="<%= intExtPrice %>">
                <input type="hidden" name="intProdID" value="<%= intProdID %>">
<%
                rsProd.MoveNext
            wend                       
%>
--------
Mit problem er at hvis der er mere en en vare i rsProd så kommer de forskellige hidden fields til at indeholde flere oplysninger adskilt af et , - hvordan får jeg disse informationer splittet op på næste asp-side??

PÅ næste asp side skal der genereres en e-mail, hvori oplysningerne skal listes op.

Udsnit af min kode til side 2:
--------
<%
If Not rsOrder.EOF Or Not rsOrder.BOF Then 'kører igennem rsOrder som indeholder alle oplysninger om kunde + ordrenr.

'MAIL TIL KUNDE
        Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
        Mailer.CharSet = 1
       
        Mailer.FromName = "Datronic NetButik" 'Afsender navn
        Mailer.FromAddress = "salg@Datronic.dk" 'Afsender e-mail
        Mailer.RemoteHost = "mail.datronic.dk" 'afsender mail
        Mailer.AddRecipient request("strFirst"), request("strEmail") ' Kunde navn og e-mail (hvor mailen sendes til)
        Mailer.AddBCC "Datronic ApS", "afa@datronic.dk" 'e-mail som kopi af mailen sendes til (butikkens mail)
        Mailer.Subject  = "Din ordre hos Datronic Aps - ordrebekræftelse" 'Emne i mail
       
        tekst = ""
        linie = vbCrLf
       
        if request("strFirst") <> "" then 'hvis fornavn ikke er blak udskrives teksten hej navn
        tekst = tekst & "<font face='verdana' size='2'><b>Hej " & request("strFirst") & linie & linie
        end if
       
        tekst  = tekst & "</font></b><br><font face='verdana' size='1' color='black'>Bemærk! Du kan ikke besvare denne mail.</font>" & linie & linie
        tekst  = tekst & "<br><br><font face='verdana' size='2'>Tak! Fordi du handlede hos Datronic ApS<br>"& linie & linie
        tekst  = tekst & "Følgende ordre er blevet modtaget:" & linie & linie
        tekst  = tekst & "<br><br><strong>Ordrenr:&nbsp;</strong>" & request("intOrderID") & linie & linie & linie & linie 'ordrenr udskrives
        tekst  = tekst & "<br><br><strong>Kundeoplysninger:&nbsp;</strong>" & linie & linie & linie & linie
        tekst  = tekst & "<br>" & request("strFirst") & "&nbsp;" & request("strLast") & linie & linie & linie & linie 'fornavn og efternavn på kunde udskrives
        tekst  = tekst & "<br>" & request("strAddress1") & linie & linie & linie & linie ' kundeadresse
        tekst  = tekst & "<br>" & request("strPostalCode") & "&nbsp;" & request("strCity") & linie & linie & linie & linie 'postnr og by
        tekst  = tekst & "<br>" & request("strCountry") & linie & linie & linie & linie 'land
        tekst  = tekst & "<br>Tlf.:&nbsp;" & request("strPhone") & linie & linie & linie & linie 'kundens telefonnummer
        tekst  = tekst & "<br><br><strong>E-mail:&nbsp;</strong>" & linie & linie & linie & linie
        tekst  = tekst & "<br>" & request("strEmail")& linie & linie 'kunde e-mail
        tekst  = tekst & "<br><br><strong>Betalingsform:&nbsp;</strong>" & linie & linie & linie & linie
        tekst  = tekst & "<br>" & request("strBetaling")& linie & linie 'den valgt betalingsform
        tekst  = tekst & "<br><br><strong>Leveringsadresse:&nbsp;</strong>" & linie & linie & linie & linie
        tekst  = tekst & "<br>" & request("strShipAdresse")& linie & linie 'leveringsadressen
'End If        
'If Not rsItem.EOF Or Not rsItem.BOF Then        'kører igennem rsItem, som indeholder oplysninger om varer i ordren
       
        tekst  = tekst & "<br><br><strong>Ordreindhold:&nbsp;</strong>" & linie & linie & linie & linie
        tekst  = tekst & "<table width='470'><tr>"     
        tekst  = tekst & "<td width='13%'><font face='Verdana' size='1'>Antal</font></td>"
        tekst  = tekst & "<td width='13%'><font face='Verdana' size='1'>Vare ID</font></td>"
        tekst  = tekst & "<td width='44%'><font face='Verdana' size='1'>Vare</font></td>"
        tekst  = tekst & "<td width='15%' align='right'><font face='Verdana' size='1'>Pris pr stk</font></td>"
        tekst  = tekst & "<td width='15%' align='right'><font face='Verdana' size='1'>Pris i alt</font></td>"
       
                       
        tekst  = tekst & "<tr>"
        tekst  = tekst & "<td width='13%' align='left' valign='middle' nowrap><font face='Verdana' size='1'>" & request ("intQuant") & "<br></font></td>"
        tekst  = tekst & "<td width='13%' align='left' valign='middle' nowrap><font face='Verdana' size='1'>" & request ("intProdID") & "<br></font></td>"
        tekst  = tekst & "<td width='44%' align='left' valign='middle' nowrap><font face='Verdana' size='1'>" & request  ("strProdName") & "<br></font></td>"
        tekst  = tekst & "<td width='15%' align='right' valign='middle' nowrap><font face='Verdana' size='1'>" & request ("intPrice") & "<br></font></td>"
        tekst  = tekst & "<td width='15%' align='right' valign='middle' nowrap><font face='Verdana' size='1'>" & request ("intExtPrice") & "<br></font></td>"
        tekst  = tekst & "</tr>"
        tekst  = tekst & "</tr>"
        tekst  = tekst & "<tr><td colspan='4'><font face='Verdana' size='1'>Kr. total i alt</font></td>"
        tekst  = tekst & "<td align='right'><font face='Verdana' size='1'><strong>" & request("intTotal") & "</strong></font></td></tr></table>"   
       
        tekst  = tekst & "<br><br>Med venlig hilsen"& linie & lilie & linie & linie
        tekst  = tekst & "<br>Datronic ApS / NetButik"& linie & linie & lilie
        tekst  = tekst & "<br>Har du spørgsmål eller er der fejl vedr. din ordre, kontakt da venligst Datronic ApS på <a href='mailto:salg@datronic.dk.dk'><font color=black>salg@datronic.dk</font></a>"& linie & linie & linie
        'tekst  = tekst & "<br><br><font color=green>GLÆDELIG JUL</font> <font color=red>&</font> <font color=green>GODT NYTÅR </font>" 'tekst som kan sættes på ved specielle lejligheder fx. jul, ferie
       
        Mailer.BodyText  = tekst
        Mailer.ContentType = "text/html"
        Mailer.SendMail
--------
Som det er nu, bliver oplysningerne bare skrevet ud efter hinanden, men jeg vil gerne have dem skrevet under hinanden.

Ordreindhold:  Antal Vare ID Vare Pris pr stk Pris i alt
1, 1 4, 22
Vega+ PRO L5 inkl. Onsite service, BlackView M171
12.495,00, 3.199,00
12.495,00, 3.199,00

Kr. total i alt 16.478,70
Avatar billede annettef Nybegynder
28. september 2004 - 08:45 #1
Ups - kom lige til at poste spørgsmålet inde jeg blev færdig med at skrive....

Oplysningerne skal skrives ud på denne måde:
Antal | Vare ID | Vare            | Pris pr. stk | Pris i alt |
    1        4  Vega+ PRO L5          12.495,00    12.495,00
    1        22  BlackView M171          3.199,00    3.199,00
Kr. total i alt                                        16.478,70

Det korte af det lange er:
1) Hvordan splitter jeg oplysningerne op?
2) Er der en anden og bedre måde at gøre det på?

Håber nogen kan hjælpe!

/Annette
Avatar billede eagleeye Praktikant
28. september 2004 - 08:51 #2
Når man har flere felter med samme nanv giver det en komma sepereret liste, så normalt slitter man på komma "," da der er komma imellem hver: 1, 1 4, 22

men prisen injdeolder også komma så du må splitte på ", " eller " " og tjekke om der også er mellemrum imellem : 12.495,00, 3.199,00

idArr = Split(request.form("intProdID"), ",")
prisArr = Split(request.form("intPrice"), ", ")


Så man man evt. loope igennem arrayet:

for i=0 to ubound(arrId)
  id = trim(arrId(i))
  pris = arrPris(i)
  ...
next
Avatar billede fennec Nybegynder
28. september 2004 - 08:56 #3
Du kan også omdøbe dine hidden felter så de også indeholder intProdID, som jeg går ud fra er unikt. intProdID feltet skal IKKE omdøbes.

<input type="hidden" name="strOrderItem<%= intProdID %>" value="<%= intProdID %>,<%= intQuant %>">
<input type="hidden" name="intQuant<%= intProdID %>" value="<%= intQuant %>">
...
<input type="hidden" name="intProdID" value="<%= intProdID %>">

På den måde kan du løbe request.form("intProdID") igennem og finde alle form felter tilknyttet til det specifikke ID.

idArr = Split(request.form("intProdID"), ",")
for each ProdID in idArr
  intQuant = request.form("intQuant"& ProdID)
  StrProdName = request.form("StrProdName"& ProdID)
  intPrice = request.form("intPrice"& ProdID)
next
Avatar billede annettef Nybegynder
28. september 2004 - 09:23 #4
Nu har jeg forsøgt mig med begge forslag, men kan ikke rigtigt få noget af det til at virke.

Fennec's forslag: det eneste der bliver udskrevet er ProdID men stadig adskilt af komma... resten af oplysningerne bliver ikke udskrevet.

Eagleeye's forslag: kan ikke helt finde ud af hvor det forskellige skal sættes ind i min kode og hvodan jeg skal få det skrevet ud.

Tror lige jeg vil se om jeg ikke kan gøre det på en anden måde - måske ved at udskrive alle oplysningerne på samme side som de bliver sendt/hvor e-mailen oprettes.

Men forslag er selvfølgelig stadig velkomne...

/Annette
Avatar billede eagleeye Praktikant
28. september 2004 - 09:29 #5
Det skal sættes ind på den side som sender mailen:


idArr = Split(request.form("intProdID"), ",")
prisArr = Split(request.form("intPrice"), ", ")
for i=0 to ubound(arrId)
  id = trim(arrId(i))
  pris = arrPris(i)
  response.write id & "  " & pris & "<br>"
next
Avatar billede annettef Nybegynder
28. september 2004 - 09:35 #6
Så får jeg følgende fejl:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'ubound'

/datronic/frameset/checkout4.asp, line 126

Linie 126 er følgende

124  idArr = Split(request.form("intProdID"), ",")
125        prisArr = Split(request.form("intPrice"), ", ")
126        for i=0 to ubound(arrId)
127          id = trim(arrId(i))
128          pris = arrPris(i)
129          response.write id & "  " & pris & "<br>"
130        next

/Annette
Avatar billede eagleeye Praktikant
28. september 2004 - 09:36 #7
Arh ok koden skal være:

arrId = Split(request.form("intProdID"), ",")
arrPris = Split(request.form("intPrice"), ", ")
for i=0 to ubound(arrId)
  id = trim(arrId(i))
  pris = arrPris(i)
  response.write id & "  " & pris & "<br>"
next
Avatar billede annettef Nybegynder
28. september 2004 - 09:45 #8
Okay - nu skrives oplysningerne ud under hinanden, men på selve siden. Hvordan får jeg dem så skrevet i mailen i stedet for???

/Annette
Avatar billede annettef Nybegynder
28. september 2004 - 09:47 #9
Jeg vil gerne have oplysningerne skrevet i en tabel, så de står overskueligt. Jeg har lige prøvet at flytte next ned under min tabel, men så bliver oplysningerne bare skrevet ud i en linie adsklit af komma, men flere gange (altså samme linie flere gange).
Avatar billede eagleeye Praktikant
28. september 2004 - 11:52 #10
ok så vist jeg kan se blvier det skrevet her:

        tekst  = tekst & "<tr>"
        tekst  = tekst & "<td width='13%' align='left' valign='middle' nowrap><font face='Verdana' size='1'>" & request ("intQuant") & "<br></font></td>"
        tekst  = tekst & "<td width='13%' align='left' valign='middle' nowrap><font face='Verdana' size='1'>" & request ("intProdID") & "<br></font></td>"
        tekst  = tekst & "<td width='44%' align='left' valign='middle' nowrap><font face='Verdana' size='1'>" & request  ("strProdName") & "<br></font></td>"
        tekst  = tekst & "<td width='15%' align='right' valign='middle' nowrap><font face='Verdana' size='1'>" & request ("intPrice") & "<br></font></td>"
        tekst  = tekst & "<td width='15%' align='right' valign='middle' nowrap><font face='Verdana' size='1'>" & request ("intExtPrice") & "<br></font></td>"
        tekst  = tekst & "</tr>"


Så prøv at rette det til:


      arrId = Split(request.form("intProdID"), ",")
      arrPris = Split(request.form("intPrice"), ", ")
      arrQuant = Split(request.form("intQuant"), ",")
      arrstrProdName = Split(request.form("strProdName"), ", ")
      arrintExtPrice = Split(request.form("intExtPrice"), ", ")
      for i=0 to ubound(arrId)

        tekst  = tekst & "<tr>"
        tekst  = tekst & "<td width='13%' align='left' valign='middle' nowrap><font face='Verdana' size='1'>" & arrQuant(i) & "<br></font></td>"
        tekst  = tekst & "<td width='13%' align='left' valign='middle' nowrap><font face='Verdana' size='1'>" & arrId(i) & "<br></font></td>"
        tekst  = tekst & "<td width='44%' align='left' valign='middle' nowrap><font face='Verdana' size='1'>" & arrstrProdName(i) & "<br></font></td>"
        tekst  = tekst & "<td width='15%' align='right' valign='middle' nowrap><font face='Verdana' size='1'>" & arrPris(i) & "<br></font></td>"
        tekst  = tekst & "<td width='15%' align='right' valign='middle' nowrap><font face='Verdana' size='1'>" & arrintExtPrice(i) & "<br></font></td>"
        tekst  = tekst & "</tr>"
      next
Avatar billede annettef Nybegynder
28. september 2004 - 12:06 #11
Super nu virker det - tusind tak for hjælpen, det var fedt!

/Annette
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