Avatar billede domingo Nybegynder
12. marts 2005 - 18:48 Der er 32 kommentarer

Send ordre med Jmail

Hej
Har arbejdet på en hjemmeside nogen tid nu, og er kommet til det punkt hvor kunden har købt sine varer, og der dermed skal sendes en mail ud til kunen og til mig, ang brugerinfo og købsinfo.
Har roddet lidt med det, men syntes ikke rigtig at kunne få det til at fungere.

Mit mailscript ser sådan ud:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="inc_CharonCart.asp" -->
<!--#include file="Connections/db.asp" -->
<%
Dim bruger__MMColParam
bruger__MMColParam = "1"
If (Session("MM_Username") <> "") Then
  bruger__MMColParam = Session("MM_Username")
End If
%>
<%
Dim bruger
Dim bruger_numRows

Set bruger = Server.CreateObject("ADODB.Recordset")
bruger.ActiveConnection = MM_db_STRING
bruger.Source = "SELECT * FROM brugere WHERE brugernavn = '" + Replace(bruger__MMColParam, "'", "''") + "'"
bruger.CursorType = 0
bruger.CursorLocation = 2
bruger.LockType = 1
bruger.Open()

bruger_numRows = 0
%>

<%
Set msg = Server.CreateObject("JMail.Message")
msg.ContentType = "text/html"
msg.Logging = True
msg.Silent = True
msg.From = "info@zenithart.dk"  'Afsender e-mail
msg.FromName = "zenithart"
msg.Charset = "iso-8859-1"

msg.AddRecipient "min mail", "mit navn"
msg.Subject = "ordre"
msg.body =


if not msg.Send("smtp.danhost.dk" ) then
  Response.write "<pre>" & msg.log & "</pre>"
else
  Response.write "Meddelelsen er nu sendt!"
end if

Set msg = nothing


%>

Men hvordan jeg får sendt informationerne fra mit recordset, og fra CharonCarten, er jeg ikke helt med på....
De forskllige informationer er følgende:

Fra recordsettet "bruger":
<%=(bruger.Fields.Item("firmanavn").Value)%></font>
<%=(bruger.Fields.Item("CVR").Value)%></font>
<%=(bruger.Fields.Item("fornavn").Value)%></font>
<%=(bruger.Fields.Item("efternavn").Value)%></font>
<%=(bruger.Fields.Item("gade").Value)%></font>
<%=(bruger.Fields.Item("postnummer").Value)%></font>
<%=(bruger.Fields.Item("bynavn").Value)%></font>
<%=(bruger.Fields.Item("Land").Value)%></font>
<%=(bruger.Fields.Item("tlf").Value)%></font>
<%=(bruger.Fields.Item("fax").Value)%></font>
<%=(bruger.Fields.Item("email").Value)%></font>
<%=(bruger.Fields.Item("Ffirma").Value)%></font>
<%=(bruger.Fields.Item("Fgade").Value)%></font>
<%=(bruger.Fields.Item("Fpostnr").Value)%></font>
<%=(bruger.Fields.Item("Fby").Value)%></font>
<%=(bruger.Fields.Item("Fland").Value)%></font>

Fra CharonCharten - hvilket måske er lidt mere kompliceret, eftersom ser er en repeat region med i billedet:

<%
'
'Begin cart repeat region
'
For i=0 to ubound(CCcart,2)
if CCcart(CC_PRODUCTID,i) <> "" then
%>
                         
<%=CCcart(CC_Quantity,i)%>
<%=CCcart(CC_Name,i)%>
<%=CCcart(CC_storrelseVare,i)%>
<%=CCcart(CC_NrVare,i)%>
<%=CCcart(CC_Price,i)%>
<%=CCcart_LineTotal%>

<%
end if
next  'end cart repeat region
%>

<%=CCcart_GrandTotal%>


Håber virkelige der er nogen de kan hjælpe...
P.S. Der skal selvølgelig være beskrivende tekst, foran de forskellige dynamiske tekstfelter, og evt. noget tabel eller lign.

Mvh Sigurd
Avatar billede domingo Nybegynder
12. marts 2005 - 18:49 #1
P.S.
</front> skal selvfølgelig ikke stå der efter den dynamiske tekst under recordset.....
Avatar billede moejensen Nybegynder
12. marts 2005 - 18:59 #2
du trækker alleværdierne ud, og samler dem i en streng, som du sender mail JMail

msg.Subject = strOrdre
Avatar billede moejensen Nybegynder
12. marts 2005 - 19:01 #3
ex.:

strOrdre = strOrdre & "Firmanavn: " & bruger.Fields.Item("firmanavn").Value)
strOrdre = strOrdre & "CVR: " & bruger.Fields.Item("CVR").Value)
osv...
Avatar billede moejensen Nybegynder
12. marts 2005 - 19:03 #4
du skal nok lige have & vbCRLF i enden af hver linie, for at få et linieskift
Avatar billede domingo Nybegynder
12. marts 2005 - 19:06 #5
det skal da ikke være msg.Subject, bliver det så ikke alt sammen sat ind i subjektet?
Avatar billede moejensen Nybegynder
12. marts 2005 - 19:07 #6
og der hvor du repeater, gør du følgende:


For i=0 to ubound(CCcart,2)
if CCcart(CC_PRODUCTID,i) <> "" then
%>
strOrdre = strOrdre & "Mængde: " & CCcart(CC_Quantity,i) &vbCtrl
strOrdre = strOrdre & "Name: " & CCcart(CC_Name,i) &vbCtrl
strOrdre = strOrdre & "storrelseVare: " & CCcart(CC_storrelseVare,i) &vbCtrl
strOrdre = strOrdre & "NrVare: " & CCcart(CC_NrVare,i) &vbCtrl
strOrdre = strOrdre & "Price: " & CCcart(CC_Price,i) &vbCtrl
strOrdre = strOrdre & "LineTotal: " & CCcart_LineTotal &vbCtrl

<%
end if
next  'end cart repeat region
Avatar billede moejensen Nybegynder
12. marts 2005 - 19:09 #7
selvfølgelig, det gik lidt for hurtigt. Det skal selvfølgelig være:

msg.body =
Avatar billede moejensen Nybegynder
12. marts 2005 - 19:09 #8
msg.body = strOrdre
Avatar billede domingo Nybegynder
12. marts 2005 - 19:10 #9
får denne fejl:

Microsoft VBScript compilation error '800a0401'

Expected end of statement

/sendordre.asp, line 39

strOrdre = strOrdre & "Firmanavn: " & bruger.Fields.Item("firmanavn").Value)
---------------------------------------------------------------------------^
Avatar billede domingo Nybegynder
12. marts 2005 - 19:10 #10
fejlen ligger til slut, altså efter .value)
Avatar billede moejensen Nybegynder
12. marts 2005 - 19:16 #11
hvis dit recordset heddder bruger, så burde det være nok at skrive

bruger("firmanavn")
Avatar billede domingo Nybegynder
12. marts 2005 - 19:17 #12
Så den kommer til at se sådan ud:
strOrdre = strOrdre & "Firmanavn: " & bruger.("firmanavn").Value)
?
Avatar billede domingo Nybegynder
12. marts 2005 - 19:18 #13
det giver denne fejl:
Expected identifier
fejlen ligger efter bruger.
Avatar billede moejensen Nybegynder
12. marts 2005 - 19:21 #14
uden .
Avatar billede domingo Nybegynder
12. marts 2005 - 20:02 #15
Så... Nu sender den meddeelsen... der er bare lige det problem, at der ikke står noget i den...
Avatar billede moejensen Nybegynder
12. marts 2005 - 20:08 #16
husker du at :

<%
Set msg = Server.CreateObject("JMail.Message")
msg.ContentType = "text/html"
msg.Logging = True
msg.Silent = True
msg.From = "info@zenithart.dk"  'Afsender e-mail
msg.FromName = "zenithart"
msg.Charset = "iso-8859-1"

msg.AddRecipient "min mail", "mit navn"
msg.Subject = "ordre"
msg.body =


if not msg.Send("smtp.danhost.dk" ) then
  Response.write "<pre>" & msg.log & "</pre>"
else
  Response.write "Meddelelsen er nu sendt!"
end if

Set msg = nothing


%>


skal stå under der hvor du laver din strOrdre, for ellers er strengen jo tom
Avatar billede domingo Nybegynder
12. marts 2005 - 20:14 #17
Ok.... Så langt så godt... Nu sker der skam noget.

Hvordan får jeg det så rykket ned under hinanden?
Avatar billede moejensen Nybegynder
12. marts 2005 - 20:36 #18
hvis det virker har du vel rykket det som det skal være.
Avatar billede domingo Nybegynder
12. marts 2005 - 20:46 #19
Jeg mener i selve mailen... Nu står det jo i een lang kører.... kan man ikke få det ned under hinanden...?
Avatar billede moejensen Nybegynder
12. marts 2005 - 21:01 #20
du kan bruge &vbCtrl til at lave linieskift

hvis du vi lhave det sat rigtig lækkert op skal det laves i html, og så skal du bruge

mgs.HTMLBody = strOrdre til at sende mail en med
Avatar billede domingo Nybegynder
13. marts 2005 - 14:35 #21
Benytter &vbCtrl  efter hver linie, men derfor står det stadig i een lang kører...

Hvis jeg skal benytte html, og gerne vil have at oversigten over købte varer kommer ind i et tabel, hvordan skal det så skrives, hvis udgangstabellen ser sådan ud:

<table width="100%" border="1" align="center" cellpadding="3" cellspacing="0" bordercolor="#333333">
                            <tr>
                              <td colspan="2"><font face="Arial, Helvetica, sans-serif">Antal</font>
                              </td>
                              <td width="28%">Billede/Ramme</td>
                              <td width="16%"><font face="Arial, Helvetica, sans-serif">st&oslash;rrelse</font></td>
                              <td width="16%"><font face="Arial, Helvetica, sans-serif">Varenr.</font></td>
                              <td width="3%">&nbsp;</td>
                              <td width="11%"><font face="Arial, Helvetica, sans-serif">Pris
                                stk. </font></td>
                              <td width="15%"><font face="Arial, Helvetica, sans-serif">Total</font></td>
                            </tr>
                            <%
'
'Begin cart repeat region
'
For i=0 to ubound(CCcart,2)
if CCcart(CC_PRODUCTID,i) <> "" then
%>
                            <tr>
                              <td colspan="2"><%=CCcart(CC_Quantity,i)%></td>
                              <td><%=CCcart(CC_Name,i)%></td>
                              <td><%=CCcart(CC_storrelseVare,i)%></td>
                              <td><%=CCcart(CC_NrVare,i)%></td>
                              <td>&nbsp;</td>
                              <td><div align="right">kr.<%=CCcart(CC_Price,i)%></div></td>
                              <td><div align="right">kr.<%=CCcart_LineTotal%></div></td>
                            </tr>
                            <%
end if
next  'end cart repeat region
%>
                            <tr>
                              <td colspan="5" rowspan="3">&nbsp;</td>
                              <td>&nbsp;</td>
                              <td colspan="2">&nbsp;</td>
                            </tr>
                            <tr>
                              <td>&nbsp;</td>
                              <td><font face="Arial, Helvetica, sans-serif">Pris
                                i alt</font></td>
                              <td><div align="right"><font face="Arial, Helvetica, sans-serif">kr.<%=CCcart_GrandTotal%></font></div></td>
                            </tr>
                            <tr>
                              <td>&nbsp;</td>
                              <td colspan="2">&nbsp;</td>
                            </tr>
                          </table>
Avatar billede moejensen Nybegynder
13. marts 2005 - 14:45 #22
så sætter du hver linie ind i:

strOrdre = strOrdre & "linien ind her" &vbCtrl

men husk der hvor der står " i normal html skal du skrive ""
når der er asp værdier skriver du ex: 
strOrdre = strOrdre & "<td colspan=""2"">"& CCcart(CC_Quantity,i) &"</td>" &vbCtrl
Avatar billede domingo Nybegynder
13. marts 2005 - 15:11 #23
Så har jeg prøvet det. Har indsat en lille tabel som test, men får nu fejlmeddeelsen:

Microsoft VBScript runtime error '800a01a8'

Object required: 'strOrdre'

/sendordre.asp, line 92


Tabellen ser sådan ud:
<%
strOrdre = strOrdre & "<table width=""50%"" border=""1"" cellpadding=""0"" cellspacing=""0"" bordercolor=""#000000">"" &vbCtrl
strOrdre = strOrdre & "<tr>" &vbCtrl
strOrdre = strOrdre & "<td>&nbsp;</td>" &vbCtrl
strOrdre = strOrdre & "</tr>" &vbCtrl
strOrdre = strOrdre & "</table>" &vbCtrl
%>

linie 92 er:
mgs.HTMLBody = strOrdre
Avatar billede moejensen Nybegynder
13. marts 2005 - 15:20 #24
du har flyttet et " på den forkerte side af >

strOrdre = strOrdre & "<table width=""50%"" border=""1"" cellpadding=""0"" cellspacing=""0"" bordercolor=""#000000"">" &vbCtrl
Avatar billede domingo Nybegynder
13. marts 2005 - 16:34 #25
Jammen det ser jo rigtig godt ud... har fået sat det hele op...
Er det også muligt at lave et show if???

Har en del af kunde informationen der hedder forsendelsesinformation.
Er det muligt at kun at vise det hvis feltet "Ffirma" i tabellen "bruger" er udfyldt?
Avatar billede moejensen Nybegynder
13. marts 2005 - 16:44 #26
du kan vel bare skrive:

if bruger("Ffirma") > "" Then
  det der skal vises
else
  hvis Ffirma ikke er udfyldt
End If
Avatar billede domingo Nybegynder
13. marts 2005 - 16:50 #27
Ok.... Tusind tak - Så skulle den være i vinkel... Det var sku lækkert!!!

Et sidste spørgsmål på faldrebet... Ved du hvordan man opretter et ordrenr.?

hvis f.eks.:
ordrenummeret står i tabellen "ordre" og feltet "ordrenr"
så et eller andet med at tage det sidste ordrenr. og lægge een oveni...?

Men ellers siger jeg tak for hjælpen....
Avatar billede moejensen Nybegynder
13. marts 2005 - 17:03 #28
du definere bare ordrenr, som autonumber i tabellen, så fliver det altid fortløbende.
Avatar billede domingo Nybegynder
13. marts 2005 - 17:11 #29
poblemet er blot, at når kunden bestiller flere vare ad gangen, oprettes én post pr. vare, og der skal ordrenr. jo være de samme på alle posterne...
Avatar billede moejensen Nybegynder
13. marts 2005 - 17:21 #30
har du ikke normaliserede din database?

du bør jo have en tabel der indeholder ordre, og en der indeholder varer, og en tabel der ex hedder ordre_varer, som indeholder relationerne mellem de to tabeller.
Avatar billede domingo Nybegynder
13. marts 2005 - 18:23 #31
Hmmm. Ok.Har tabellen ordre, og tabellen varer - men ikke den sidste...
Hvordan skal de relationer defineres???
Avatar billede moejensen Nybegynder
13. marts 2005 - 18:36 #32
du kan prøve at læse den her artikel

http://maz.spork.dk/pub/Normaliseringsprincipper.htm
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