Avatar billede fastwrite Nybegynder
09. september 2003 - 23:14 Der er 43 kommentarer og
2 løsninger

Jmail - sende oplysninger fra database

Hej med jer. Jeg roder lidt med min kones hjemmeside der har en lille hobby med at lave armbånd og kort, hvor man kan bestille hendes ting. Jeg har lavet det hele som det skal se ud, men når jeg skal sende via JMAIL er jeg ikke helt sikker på hvordan jeg får ordren sendt til både kunden og til min kones e-mail.

Koden, der aktiveres, når brugeren trykker på "send bestilling":
------------------------------------------
Set rst = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From tblkunde ORDER BY Nr DESC"
rst.Open strSQL, Con, 1, 3

if not rst.BOF Then
    ordrenr = rst("Nr") + 1
else
    ordrenr = 1
end if

rst.addnew
rst("Nr") = ordrenr
rst("Navn") = Request.Form("Navn")
rst("Adresse") = Request.Form("Adresse")
rst("Postnr") = Request.Form("Postnr")
rst("By") = Request.Form("By")
rst("Tlf") = Request.Form("Tlf")
rst("Email") = Request.Form("Email")
rst("Bemaerkninger") = Request.Form("Bemaerkninger")
rst("Sendt") = "Nej"
rst("Betaling") = Request.Form("Betaltype")
rst.update

dim rst2, strSQL2

Set rst2 = Server.CreateObject("ADODB.RecordSet")
strSQL2 = "Select * From tblOrdreIndhold"
rst2.Open strSQL2, Con, 1, 3

dim vare
for i = 1 to session("kurvnr")
vare = Split(session("vare" & i), " ")

rst2.addnew
rst2("OrdreNr") = ordrenr
rst2("id") = vare(0)
rst2("Antal") = vare(1)
rst2.update
next
%>
<% end If %>
------------------------------------------
og her er min foreløbige asp fil der foretager selve afsendelsen:
------------------------------------------
Dim mail, body

Set mail = Server.CreateObject("JMail.SMTPMail")

With mail
    .Subject = "Mail"
    .Body = "Bruger: " & request.form("navn") & vbCRLF & "E-mail: " & request.form("email")
    .Sender = " " & request.form("email")
    .SenderName = " " & request.form("navn")
    .AddRecipient "info@mrsskipper.dk"
    .ServerAddress = "mail.jirty.dk"
    .Execute

End With %>
        <% Set Mail = Nothing %>

------------------------------------------
Hvis jeg prøver at lave flere .body bliver det kun den sidst indtastet .body der kommer med. Men i den skal jeg også have mine database felter med - det som kunden har bestilt.
Avatar billede netro Nybegynder
09. september 2003 - 23:16 #1
Du kan sende hende en blind kopi. Se: http://www.opfinderen.dk/sites/?id=14
Avatar billede -mundi- Nybegynder
09. september 2003 - 23:23 #2
.AddRecipient "dinkonesemail@mail.dk"
eller
.addbcc "dinkonesemail@mail.dk"

begge dele tilføjer en extra mailmodtager, dog er bcc skjult for den oprindelige modtager
Avatar billede fastwrite Nybegynder
09. september 2003 - 23:25 #3
netro og -mundi- tak for det.. så fik jeg da løst lidt af gåden.. nu mangler jeg bare det med databaseudtrækket.
Avatar billede -mundi- Nybegynder
09. september 2003 - 23:28 #4
hvad er det du vil have lavet ?
Avatar billede fastwrite Nybegynder
09. september 2003 - 23:31 #5
når brugeren har trykket på send bestilling, skal den sende en mail til min hustru hvor mailen viser hvad der er bestilt  - såmænd ikke andet :o)
Avatar billede fastwrite Nybegynder
09. september 2003 - 23:40 #6
nu er jeg kommet så langt at jeg har fået flere oplysninger med fra min FORM - altså vha request.form("felt") - men - stadigvæk - hvordan får jeg de rigtige oplysninger med, som nu er lagret i databasen?
Avatar billede netro Nybegynder
10. september 2003 - 00:04 #7
De er jo stadig tilgængelige med Request.Form("Navn") efter indsættelse i tabellen. Alternativt kan du overføre værdierne fra formularen til variabler, inden du foretager tabelindsættelsen.

Har jeg misforstået dig?
Avatar billede fastwrite Nybegynder
10. september 2003 - 00:36 #8
Det tror jeg at du har. Det er ikke en formular dataene med de bestilte ting kommer fra - de bliver lagt ned i en database. Det er kun formularen med navn og adresse etc., der ligger i en form.

ligesom hvis du har bestilt noget hos ex. www.shg.dk så modtager du en email med de ting du har bestilt. Lidt på samme måde er det jeg søger her.
Avatar billede netro Nybegynder
10. september 2003 - 00:46 #9
Okay - kan du så ikke bare trække den post ud af tabellen og medsende data? Jeg er ikke helt med på, hvad problemet er...
Avatar billede fastwrite Nybegynder
10. september 2003 - 00:51 #10
problemet er at jeg 'bare' skal "trække den post ud af tabellen" - hvordan er det jeg gør det?
Avatar billede netro Nybegynder
10. september 2003 - 00:56 #11
Ligesom du gør i toppen af siden.

Set rs = Con.Execute("Select Info1, Info2, Info3 From TabelNavn Where EtID = " & ID)

.Body = rs("Info1") & rs("Info2") & rs("Info3") 'Osv...
Avatar billede fastwrite Nybegynder
10. september 2003 - 01:29 #12
netro - jeg prøver lige.
Avatar billede fastwrite Nybegynder
10. september 2003 - 01:36 #13
hmm.. den sidste del "where ETID = "& ID)

ETID er det id'en fra tabellen og ID er det session nummer der bliver oprettet?
Avatar billede netro Nybegynder
10. september 2003 - 01:38 #14
EtID er ID-nummeret på den post, du ønsker at udtrække. Jeg ved ikke, hvad du har kaldt din kolonnne.
Avatar billede fastwrite Nybegynder
10. september 2003 - 01:40 #15
sådan ser min kode ud lige nu:

Dim rst
Dim strSQL

Set rst = Con.Execute("Select ordrenr, id, antal From tblOrdreindhold Where id = " & kurvnr)
rst.Open strSQL, con, 3, 1, 1 %>

kurvnr er det session ID der bliver lavet på en anden ASP side (den side hvor man trykker "send bestilling") - men det virker ikke.. hvad er forkert?
Avatar billede fastwrite Nybegynder
10. september 2003 - 01:41 #16
og i min mail har jeg

Mailtekst = Mailtekst & rst("ordrenr")

og en .body = mailtekst
Avatar billede netro Nybegynder
10. september 2003 - 01:42 #17
Stryg den nederste linie. Jeg har allerede skabt recordsættet på første linie.
Avatar billede fastwrite Nybegynder
10. september 2003 - 01:45 #18
havde jeg allerede prøvet.. lige nu har jeg kun linjen:

Set rst = Con.Execute("Select ordrenr, id, antal From tblOrdreindhold Where ordrenr = " & kurvnr)

men den går i fejl.. siden kan ikke vises. Det sidste i linien  " & kurvnr) hvor kurvnr er taget fra min kode der ser sådan ud: for i = 1 to session("kurvnr")

jeg formoder at det er den rigtige måde? men det virker ikke :(
Avatar billede netro Nybegynder
10. september 2003 - 01:53 #19
Så er det formentlig, fordi "kurvnr" ikke indeholder en værdi. Prøv at udskrive dit statement:

Response.Write ("Select ordrenr, id, antal From tblOrdreindhold Where ordrenr = " & kurvnr)
Avatar billede fastwrite Nybegynder
10. september 2003 - 02:02 #20
Jeg prøver og prøver, men den vil ikke.. jeg smider lige hele asp filen ind:
-------------------------------
<%@LANGUAGE="VBSCRIPT"%>
<%
' Vi åbner forbindelse til databasen
Dim con
Set con = Server.CreateObject("ADODB.Connection")

con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=D:\mrsskipper.dk\database\produkter.mdb;" &_
"Persist Security Info=False;"
%>
<%
dim rst
Set rst = Con.Execute("Select ordrenr, id, antal From tblOrdreindhold Where ordrenr = " & kurvnr)
%>

<html>
<head>
<title>Mrs Skipper</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="Expires" CONTENT="Mon, 04 Dec 1999 21:29:02 GMT">
<link rel="stylesheet" type="text/css" href="/styles.css">
</head>
<body background="../billeder/1x1-white.gif">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td> <div align="center">

<%

Dim mail, body, mailtekst

MailTekst = "Tak for din ordre! Den vil blive sendt hurtigst muligt!" & vbcrlf & vbcrlf
MailTekst = MailTekst & "Ordren vil blive sendt til:" & vbcrlf
MailTekst = MailTekst & Request.Form("Navn") & vbcrlf
MailTekst = MailTekst & Request.Form("Adresse") & vbcrlf
MailTekst = MailTekst & Request.Form("Postnr") & " " & Request.Form("By") & vbcrlf
MailTekst = MailTekst & "Tlf: " & Request.Form("Tlf") & vbcrlf
MailTekst = MailTekst & "E-mail: " & Request.Form("Email") & vbcrlf
MailTekst = MailTekst & "Bemærkninger: " & Replace(Request.Form("Bemaerkninger"), vbcrlf, "<br>") & vbcrlf & vbCRLF


Set mail = Server.CreateObject("JMail.SMTPMail")
With mail

  do while not rst.eof
    .Subject = "Mail fra www.mrsskipper."
    .Body = mailtekst
rst.MoveNext
  loop

    .Sender = " " & request.form("email")
    .SenderName = " " & request.form("navn")
    .AddRecipient "info@mrsskipper.dk"
    .ServerAddress = "mail.jirty.dk"
    .Execute

End With %>
        <% Set Mail = Nothing %>
    </div>
      <h2 align="center"> Tak for din bestilling! </h2>
      <h2 align="center">Jeg vil besvare den så hurtigt som muligt.</h2>
      <div align="center"><br>
        <font size="3">Tryk <a href="http://www.mrsskipper.dk">her</a> for at
        komme til forsiden </font></div></td>
  </tr>
</table>
<font size="3"> </font>
----------------------------------------
hvad er der galt?!
Avatar billede fastwrite Nybegynder
10. september 2003 - 02:03 #21
venter i spændt forventning... :)
Avatar billede netro Nybegynder
10. september 2003 - 02:10 #22
Til mails i plain text skal du bruge vb-konstanten vbCrlf i stedet for <br>. Ret derfor:
MailTekst = MailTekst & "Bemærkninger: " & Replace(Request.Form("Bemaerkninger"), vbcrlf, "<br>") & vbcrlf & vbCRLF
- til:
MailTekst = MailTekst & "Bemærkninger: " & Request.Form("Bemaerkninger") & vbcrlf & vbCRLF

Hvad sker der? Hvor går det galt henne i koden?
Avatar billede fastwrite Nybegynder
10. september 2003 - 02:14 #23
hvis bare jeg vidste det. Den kommer ikke med nogen fejl, anden end den sædvanlige "der opstod en intern HTTP 500-serverfejl" - og så den velkendte "siden kan ikke vises"
Avatar billede fastwrite Nybegynder
10. september 2003 - 02:21 #24
Det er lige så snart jeg smider WHERE sætningen ind at det går galt.
Avatar billede fastwrite Nybegynder
10. september 2003 - 02:43 #25
hmm.. det lader til at den faktisk ikke indsætter data i min database.. det må jeg lige kigge på .. i morgen....
Avatar billede netro Nybegynder
10. september 2003 - 02:44 #26
Funktioner -> Internetindstillinger -> Avanceret -> Vis meddelelser om uskadelige HTTP-fejl (fjern flueben)

Så får du den eksakte fejlmeddelelse at se fremover.
Avatar billede fastwrite Nybegynder
10. september 2003 - 02:44 #27
du er sikkert også gået i seng nu :) Takker for din hjælp indtil videre!
Avatar billede netro Nybegynder
10. september 2003 - 12:52 #28
Hvad siger den nu?
Avatar billede fastwrite Nybegynder
10. september 2003 - 13:46 #29
flove ting - jeg troede at jeg havde aktiveret den... pinligt.. nuvel.. den skriver:

Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression 'id ='.

/html/sendmailbestilling.asp, line 83

linie 83 er : <% Set rst = Con.Execute("Select ordrenr, id, antal From tblOrdreindhold Where id = " & kurvnr) %>
Avatar billede netro Nybegynder
10. september 2003 - 13:49 #30
Det er netop som jeg sagde, fordi kurvnr ikke indeholder en værdi. Altså får du et statement, der ser sådan ud:

Select ordrenr, id, antal From tblOrdreindhold Where id =
Avatar billede -mundi- Nybegynder
10. september 2003 - 13:50 #31
der er ikke nogen værdi i kurvnr siger den
Avatar billede fastwrite Nybegynder
10. september 2003 - 14:10 #32
ok - nu er jeg kommet så langt at den sender oplysningerne.. det er jo dejligt.. nu er problemet 'bare' at den kun sender TALLET og ikke selve PRODUKTNAVNET.. er der en nem måde at omgå dette? min tabel tblordreindhold indeholder kun tal, det er min tblprodukter der indeholder selve produktnavnene, og de er bundet sammen vha samme ID.

Og skal der ikke indsætes en for løkke så den får alle bestillinger med, og ikke kun den første linie?
Avatar billede netro Nybegynder
10. september 2003 - 14:34 #33
Set rst = Con.Execute("Select tblo.ID, tblp.Navn From tblordreindhold tblo Left Join tblprodukter tblp On tblo.ID = tblp.ID")

While Not rs.EOF
  Response.Write rst("ID") & " - " & rst("Navn") & "<br>"
  rs.MoveNext
Wend
Avatar billede fastwrite Nybegynder
10. september 2003 - 16:19 #34
netro - ser spændende ud - hvad er tblo.ID ? og tblp.NAVN ?

hmm.. gad vide hvor værdien så bliver lagt henne hvis ikke det er i kurvnr...
Avatar billede netro Nybegynder
10. september 2003 - 16:52 #35
tblo og tblp er bare aliaser for tblordreindhold og tblprodukter - for at gøre det hele lidt kortere.
Avatar billede fastwrite Nybegynder
10. september 2003 - 22:42 #36
ok - jeg prøver forslagenen - i morgen.
Avatar billede netro Nybegynder
10. september 2003 - 23:00 #37
I morgen er altid en god dag :o)
Avatar billede netro Nybegynder
12. september 2003 - 16:08 #38
Og det er i overmorgen også :o)
Avatar billede oktober Nybegynder
15. september 2003 - 04:34 #39
Lukke Tid.....  Giv så de point til Netro.... Gætter på Fastwrite selv tager pointene..... han har gjort det før.....
Avatar billede netro Nybegynder
15. september 2003 - 13:02 #40
Tjaa... Han skal jo ikke give mig dem, hvis han ikke kunne bruge hjælpen. Men jeg savner lidt respons i det mindste!
Avatar billede netro Nybegynder
01. oktober 2003 - 03:36 #41
Fastwrite - Vær så venlig at lukke tråden og prøv at leve op til dit brugernavn!
Avatar billede fastwrite Nybegynder
11. oktober 2003 - 02:58 #42
oktober... Det er da nok det værste juks jeg nogensinde har hørt. Kom med noget dokumentation på at jeg har gjort det! Alle som kender til mig herinde ved at jeg er meget fair!
Avatar billede fastwrite Nybegynder
11. oktober 2003 - 02:59 #43
Netro - tak for hjælpen - jeg beklager meget at jeg har været lidt tavs.. Sygdom kombineret med overarbejde og ferie har gjort at eksperten desværre har været lidt nedprioriteret.
Avatar billede fastwrite Nybegynder
11. oktober 2003 - 03:08 #44
oktober - jeg ved ikke om du bruger http://www.eksperten.dk/spm/401131 som påstand om at jeg ikke giver brugerne point når de giver mig et svar! Jeg kan virkelig koge over når jeg bliver beskyldt for uretfærdigheder! Måske du skulle kigge på dine egne oprettede spørgsmål, hvor nogle giver lange svar, og du spiser dem af med et par point, og selv beholder hovedparten. Fej for egen dør inden du sviner os andre til.
Avatar billede netro Nybegynder
11. oktober 2003 - 06:04 #45
Helt okay - tak for points :)
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