Avatar billede totalpc Seniormester
21. maj 2008 - 13:17 Der er 13 kommentarer og
1 løsning

Kan ikke gennemskue resultatet efter loop

Jeg har en email funktion og min test skulle resultere i at der bliver sendt 2 email. Ligenu skriver jeg bare resultatet ud på skærmen i stedet for at sende. Men jeg kan simpelhen ikke forstår hvorfor det står der 3 gange, men min tæller siger at det kun bliver sendt til 2 brugere (som er det rigtige). Jeg har stirret mig blind på det tror jeg.

<!--#include file="db.inc"-->
<%
aktiv = "nej"

ID = Request.QueryString("id")

if session("brugernavn")="" then
    nubruger=Request.Cookies("LoginInfo")("Brugernavn")
else
    nubruger=session("brugernavn")
End If


strSQL = "SELECT email, brugernavn as tilbrugernavn FROM bruger WHERE send_email=true AND brugernavn<>'"& nubruger & "'"

set rs = Conn.Execute(strSQL)

strSQL1 = "SELECT forfatter, overskrift FROM blog WHERE id="& id
set rs1 = Conn.Execute(strSQL1)

'num variablen skal tælle hvor mange brugere vi sender til
num = 0

while not rs.eof
if rs("email") <> "" then
        Set JMail = Server.CreateObject("JMail.SMTPMail")
        JMail.ServerAddress = "localhost"
        JMail.ContentType = "text/html"
        JMail.Charset = "iso-8859-1"
        JMail.ContentTransferEncoding = "8bit"
        JMail.Sender = "robot@familiencaroe.dk"
        JMail.Subject = "Der er oprettet en nyhed på familiencaroe.dk"
        JMail.AddRecipient rs("email")
        JMail.HTMLBody = "Hej "& rs("tilbrugernavn") & "<br><br>Der er oprettet en nyhed af <b><i>"& rs1("forfatter") & "</i></b> med overskriften <b><i>"& rs1("overskrift") & "</i></b><br>Log på <a

href=""http://www.familiencaroe.dk/default.asp?sitepage=blogview_indlag&id="&id&""">http://www.familiencaroe.dk</a> og læs nyheden.<br><br>Mvh Kristian"
        JMail.Priority = 3
        JMail.Silent = True
        JMail.Logging = True
          If aktiv="ja" then
        JMail.Execute
          End if

sWrite=sWrite&"<pre>" & JMail.Log & "</pre>"
sWrite=sWrite&rs("email")
sWrite=sWrite&"<br>"
sWrite=sWrite&JMail.ServerAddress
sWrite=sWrite&"<br>"
sWrite=sWrite&jmail.htmlbody
sWrite=sWrite&"<br>"

Response.Write sWrite
Conn.Execute("INSERT INTO [log] ([log],logtype) VALUES ('"&Replace(sWrite,"'","''")&"','send_email')")
   
    set JMail = nothing
else
End If
    rs.MoveNext
    num = num + 1 ' tilføjer 1 til varariablen for hvert gennemløb
Wend

Response.write "<span class='text' align='center'>Nyhedsmailen blev sendt til <b>" & num & " </b> brugere<br>"


'Reset server objects
Conn.Close
Set Conn = Nothing
Set rs  = Nothing
Set rs1  = Nothing

'Response.Redirect "default.asp?sitepage=blogview_indlag&id=" & id

%>

Resultat

kri@privat.dk
localhost
Hej Kristian

Der er oprettet en nyhed af Test med overskriften Det var da
Log på http://www.familiencaroe.dk og læs nyheden.

Mvh Kristian


kri@privat.dk
localhost
Hej Kristian

Der er oprettet en nyhed af Test med overskriften Det var da
Log på http://www.familiencaroe.dk og læs nyheden.

Mvh Kristian


jet@mail.dk
localhost
Hej Niels

Der er oprettet en nyhed af Test med overskriften Det var da
Log på http://www.familiencaroe.dk og læs nyheden.

Mvh Kristian
Nyhedsmailen blev sendt til 2 brugere
Avatar billede w13 Novice
21. maj 2008 - 13:25 #1
Prøv at rette:

sWrite=sWrite&"<pre>" & JMail.Log & "</pre>"
sWrite=sWrite&rs("email")
sWrite=sWrite&"<br>"
sWrite=sWrite&JMail.ServerAddress
sWrite=sWrite&"<br>"
sWrite=sWrite&jmail.htmlbody
sWrite=sWrite&"<br>"

til:

sWrite=sWrite&"<pre>" & JMail.Log & " - "&num&"</pre>"
sWrite=sWrite&rs("email")
sWrite=sWrite&"<br>"
sWrite=sWrite&JMail.ServerAddress
sWrite=sWrite&"<br>"
sWrite=sWrite&jmail.htmlbody
sWrite=sWrite&"<br>"

Så ser vi løbende, hvad num er.
Avatar billede totalpc Seniormester
21. maj 2008 - 13:31 #2
- 0
kristianc@privat.dk
localhost
Hej Kristian

Der er oprettet en nyhed af Test med overskriften testmail
Log på http://www.familiencaroe.dk og læs nyheden.

Mvh Kristian

- 0
kristianc@privat.dk
localhost
Hej Kristian

Der er oprettet en nyhed af Test med overskriften testmail
Log på http://www.familiencaroe.dk og læs nyheden.

Mvh Kristian

- 1
jetteogniels@mail.dk
localhost
Hej Niels

Der er oprettet en nyhed af Test med overskriften testmail
Log på http://www.familiencaroe.dk og læs nyheden.

Mvh Kristian
Nyhedsmailen blev sendt til 2 brugere
Avatar billede w13 Novice
21. maj 2008 - 14:08 #3
Kan du ikke lige - for hver post/email - udskrive id'et fra databasen også?
Avatar billede totalpc Seniormester
21. maj 2008 - 14:19 #4
Men den ID er jo id til den nye blog og derfor ens. Jeg bruger den så de via linket kan logge direkte ind på den rigtige nyhed.

- 0
kristianc@privat.dk
localhost
Hej Kristian

Der er oprettet en nyhed af Test med overskriften med id
Log på http://www.familiencaroe.dk og læs nyheden
id=132
Mvh Kristian

- 0
kristianc@privat.dk
localhost
Hej Kristian

Der er oprettet en nyhed af Test med overskriften med id
Log på http://www.familiencaroe.dk og læs nyheden
id=132
Mvh Kristian

- 1
jetteogniels@mail.dk
localhost
Hej Niels

Der er oprettet en nyhed af Test med overskriften med id
Log på http://www.familiencaroe.dk og læs nyheden
id=132
Mvh Kristian
Nyhedsmailen blev sendt til 2 brugere
Avatar billede w13 Novice
21. maj 2008 - 14:21 #5
Nej, det ID, som bliver hentet med:

strSQL = "SELECT id, email, brugernavn as tilbrugernavn FROM bruger WHERE send_email=true AND brugernavn<>'"& nubruger & "'"

set rs = Conn.Execute(strSQL)

Skulle da meget gerne være forskellige?
Avatar billede bitmatic Nybegynder
21. maj 2008 - 14:28 #6
Det er fordi du appender til sWrite ved hvert gennemløb uden at nulstille først.

prøv at erstatte:
while not rs.eof
if rs("email") <> "" then

med:
while not rs.eof
sWrite = ""
if rs("email") <> "" then
Avatar billede bitmatic Nybegynder
21. maj 2008 - 14:29 #7
Eller endnu bedre:

erstat:

sWrite=sWrite&"<pre>" & JMail.Log & "</pre>"
sWrite=sWrite&rs("email")
sWrite=sWrite&"<br>"
sWrite=sWrite&JMail.ServerAddress
sWrite=sWrite&"<br>"
sWrite=sWrite&jmail.htmlbody
sWrite=sWrite&"<br>"

med:

sWrite="<pre>" & JMail.Log & "</pre>"
sWrite=sWrite&rs("email")
sWrite=sWrite&"<br>"
sWrite=sWrite&JMail.ServerAddress
sWrite=sWrite&"<br>"
sWrite=sWrite&jmail.htmlbody
sWrite=sWrite&"<br>"
Avatar billede totalpc Seniormester
21. maj 2008 - 14:30 #8
Nå .. jeg misforstod, for jeg henter jo ikke det id i den første sql.
Men det gør jeg nu og resultatet er :
kristianc@privat.dk
localhost
Hej Kristian

Der er oprettet en nyhed af Test med overskriften med id
Log på http://www.familiencaroe.dk og læs nyheden
id=24
Mvh Kristian

- 0
kristianc@privat.dk
localhost
Hej Kristian

Der er oprettet en nyhed af Test med overskriften med id
Log på http://www.familiencaroe.dk og læs nyheden
id=24
Mvh Kristian

- 1
jetteogniels@mail.dk
localhost
Hej Niels

Der er oprettet en nyhed af Test med overskriften med id
Log på http://www.familiencaroe.dk og læs nyheden
id=30
Mvh Kristian
Nyhedsmailen blev sendt til 2 brugere

Så det er den samme de første 2 gange!
Avatar billede totalpc Seniormester
21. maj 2008 - 14:32 #9
Det er sgu rigtigt bitmatic

kristianc@privat.dk
localhost
Hej Kristian

Der er oprettet en nyhed af Test med overskriften vi prøver igen
Log på http://www.familiencaroe.dk og læs nyheden
id=24
Mvh Kristian


jetteogniels@mail.dk
localhost
Hej Niels

Der er oprettet en nyhed af Test med overskriften vi prøver igen
Log på http://www.familiencaroe.dk og læs nyheden
id=30
Mvh Kristian
Nyhedsmailen blev sendt til 2 brugere
Avatar billede bitmatic Nybegynder
21. maj 2008 - 14:54 #10
smider et svar, og ser hvad der sker :-)
Avatar billede totalpc Seniormester
21. maj 2008 - 15:01 #11
Ja det var det jeg ventede på :) w13 vil du have lidt for ihærdigheden også ?
Avatar billede totalpc Seniormester
21. maj 2008 - 15:27 #12
w13> jeg må oprette et nyt spgm hvis du vil have lidt for ihærdigheden!
Avatar billede w13 Novice
21. maj 2008 - 15:55 #13
Det går nok. ;)
Avatar billede totalpc Seniormester
21. maj 2008 - 15:58 #14
ok men takker til jer begge!
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