Avatar billede izemate Nybegynder
04. januar 2006 - 09:45 Der er 13 kommentarer og
1 løsning

Mod til nyhedsbrev system

Hejsa.

Jeg har et "lille" problem.
Jeg har et nyhedsbrev system som sender til ALLE i databasen..
Men jeg vil gerne have gjort det sådan at:
Når jeg afkrydser et felt der hedder "kun til medlemmer" så sender den kun til dem der har "medlem" i [Type]

Min access database ser sådan her ud.
  db.mdb
  nyhedsmail
  [id][navn][email][type]

i type er der både "bruger" og "medlem".. jeg skal ha lavet sådan at systemet kun sender til "medlem" når man afvinkler et felt.

\\\\ Koden til system ////

<HTML>
<HEAD>
<TITLE>Mailingliste</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<%
if request.form("mode") = "send" then


Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open "DBQ="&(Server.MapPath(".")) &"\db.mdb; DefaultDir=DBQ="&(Server.MapPath(".")) &"\;Driver={Microsoft Access Driver (*.mdb)};"
    SQL = "SELECT * from nyhedsmail"
    set send = conn.execute( SQL )
    do while not send.eof
    on error resume next
   
        Dim Mailer
       

        Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
        ' This is my local SMTP server
        Mailer.RemoteHost = "smtp.nordit.dk"
        ' mail config settings
       
        Mailer.FromName  = "Foderstoffen.dk"
        Mailer.FromAddress= "lars@media4.dk"
       
        Mailer.Subject = request.form("header")
        Mailer.AddRecipient send("email")
        Mailer.BodText = request.form("tekst")
        ' Send it...
        Mailer.SendMail
        set Mailer = nothing

if Mailer.SendMail then
  response.write "E-mail er sendt til : "& send("email") &"<BR>"
else
  Response.Write "Der skete en fejl: " & Mailer.Response
end if

send.movenext
loop
conn.close
else %>
<CENTER>
<TABLE BORDER="0">
<form action="mailadmin.asp" METHOD="POST">
<INPUT TYPE="hidden" NAME="mode" VALUE="send">
<TR>
<TD ALIGN="LEFT">
Overskrift:&nbsp;
</TD>
<TD ALIGN="LEFT">
<INPUT TYPE="TEXT" NAME="header" SIZE="50">
</TD>
</TR>
<TR>
<TD ALIGN="RIGHT" VALIGN="TOP">
Tekst:&nbsp;
</TD>
<TD ALIGN="LEFT">
<TEXTAREA COLS="45" ROWS="15" NAME="tekst"></TEXTAREA>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT">
&nbsp;
</TD>
<TD ALIGN="RIGHT">
<input type="submit" value="SEND">
</TD>
</TR>
<TR>
<TD><A HREF="slet.asp">Slet tilmeldte</a></TD>
</TR>
</FORM>
</TABLE>
</CENTER>
<% end if %>
</BODY>
</HTML>

\\\\\\ slut //////

I må gerne selv tilføje krydsfeltet som ikke skal være "checekd" som standard..
Avatar billede izemate Nybegynder
04. januar 2006 - 09:46 #1
da det er en frivillig opgave kan jeg ikke give penge for det.. ellers havde jeg naturligvis gjort dette..
Avatar billede supertekst Ekspert
04. januar 2006 - 09:55 #2
Det er vel et spørgsmål om at sætte en betingelse ind i SQL-sætningen:
Where Type = "medlem" (syntaksen skal tilpasses)
Avatar billede izemate Nybegynder
04. januar 2006 - 10:55 #3
Du bliver nød til at lave det "hele" og indsætte koden her.. for jeg fatter hat af asp :-)
Avatar billede supertekst Ekspert
04. januar 2006 - 11:17 #4
Følgende linie
p.t.:    SQL = "SELECT * from nyhedsmail"
udvides til:
prøv:    SQL = "SELECT * from nyhedsmail WHERE type = 'medlem'"

såfremt feltet type er et tekstfelt
Avatar billede izemate Nybegynder
04. januar 2006 - 12:48 #5
der skal være mulighed for at vælge om man vil sende til enten medlem eller dem alle.. her får jeg jo kun mulighed for at sende til medlem..
Avatar billede supertekst Ekspert
04. januar 2006 - 13:07 #6
if [KunTilMedlemmer] = false then
    SQL = "SELECT * from nyhedsmail"
else
    SQL = "SELECT * from nyhedsmail WHERE type = 'medlem'"
end if

hvis "KunTilMedlemmer" er en checkboks i en formular
Avatar billede izemate Nybegynder
05. januar 2006 - 08:59 #7
Supertekst >
Du har fat i det rigtige.. jeg har nu indsat koden.. men den sender stadig til allesammen i databasen?

koden ser sådan ud

------------------
<HTML>
<HEAD>
<TITLE>Mailingliste</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<%
if request.form("mode") = "send" then


Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open "DBQ="&(Server.MapPath(".")) &"\db.mdb; DefaultDir=DBQ="&(Server.MapPath(".")) &"\;Driver={Microsoft Access Driver (*.mdb)};"

if [KunTilMedlemmer] = false then
SQL = "SELECT * from nyhedsmail"
else
SQL = "SELECT * from nyhedsmail WHERE type = 'Medlem'"
end if

    set send = conn.execute( SQL )
    do while not send.eof
    on error resume next
   
        Dim Mailer
       

        Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
        ' This is my local SMTP server
        Mailer.RemoteHost = "smtp.nordit.dk"
        ' mail config settings
       
        Mailer.FromName  = "Foderstoffen.dk"
        Mailer.FromAddress= "lars@media4.dk"
       
        Mailer.Subject = request.form("header")
        Mailer.AddRecipient send("email")
        Mailer.BodText = request.form("tekst")
        ' Send it...
        Mailer.SendMail
        set Mailer = nothing

if Mailer.SendMail then
  response.write "E-mail er sendt til : "& send("email") &"<BR>"
else
  Response.Write "Der skete en fejl: " & Mailer.Response
end if

send.movenext
loop
conn.close
else %>
<CENTER>
<TABLE BORDER="0">
<form action="mailadmin.asp" METHOD="POST">
<INPUT TYPE="hidden" NAME="mode" VALUE="send">
<TR>
<TD ALIGN="LEFT">
Overskrift:&nbsp;
</TD>
<TD ALIGN="LEFT">
<INPUT TYPE="TEXT" NAME="header" SIZE="50">
</TD>
</TR>
<TR>
<TD ALIGN="RIGHT" VALIGN="TOP">
Tekst:&nbsp;
</TD>
<TD ALIGN="LEFT">
<TEXTAREA COLS="45" ROWS="15" NAME="tekst"></TEXTAREA>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT">
&nbsp;
</TD>
<TD ALIGN="RIGHT">
<input type="submit" value="SEND">
</TD>
</TR>
<TR>
<TD><A HREF="slet.asp">Slet tilmeldte</a></TD>
<td><input type="checkbox" name="KunTilMedlemmer"> <font size="1" face="verdana">Kun til medlemmer?</font></td>
</TR>
</FORM>
</TABLE>
</CENTER>
<% end if %>
</BODY>
</HTML>


På forhånd tak
Avatar billede supertekst Ekspert
05. januar 2006 - 09:26 #8
For mig ser det ud som om erklæringen af checkboksen kommer for sent, men jeg er ikke ASP-ekspert. Umiddelbart ville jeg definere HTML-koden inden SQL-kaldet?

Måske kunne det være et forsøg anvende følgende i stedet for test af Checkboksen - værdien 6=Ja-knap:

if msgbox("Kun Til Medlemmer", vbYesNo) <> 6 then
    SQL = "SELECT * from nyhedsmail"
else
    SQL = "SELECT * from nyhedsmail WHERE type = 'Medlem'"
end if
Avatar billede izemate Nybegynder
05. januar 2006 - 09:55 #9
okay.. hvordan skal chcekboxen så se ud?
stadig: <input type="checkbox" name="KunTilMedlemmer">  ??
Avatar billede supertekst Ekspert
05. januar 2006 - 10:09 #10
Har du prøvet den alternative mulighed:

if msgbox("Kun Til Medlemmer", vbYesNo) <> 6 then
    SQL = "SELECT * from nyhedsmail"
else
    SQL = "SELECT * from nyhedsmail WHERE type = 'Medlem'"
end if

.. således at der IKKE testes på checkboksen.

-

ellers prøve at fjerne [  ] omkring KunTilMedlemmer, da det ser ud som om definitionen ikke vedrører en formular.
Avatar billede izemate Nybegynder
09. januar 2006 - 12:48 #11
når jeg benytter koden :

if msgbox("Kun Til Medlemmer", vbYesNo) <> 6 then
    SQL = "SELECT * from nyhedsmail"
else
    SQL = "SELECT * from nyhedsmail WHERE type = 'Medlem'"
end if

kommer følgende fejl
Microsoft VBScript runtime  error '800a0046'

Permission denied: 'msgbox'


kun du ikke fortælle mig om jeg stadig bare skal bruge <input type="checkbox" name="KunTilMedlemmer"> som checkbox eller hvad skal den  hedde?
Avatar billede supertekst Ekspert
17. januar 2006 - 12:53 #12
Hej igen

Har nu fået installeret IIS - således at jeg nu kan køre ASP

Prøv at lægge denne rettelse ind - vedr. testn af checkboksen - den skal blive hvor den er:

Rettelsen, der gjorde udslaget var følgende i if-sætningen:
if request.form("KunTilMedlemmer") = false then
  SQL = "SELECT * from nyhedsmail"
else
  SQL = "SELECT * from nyhedsmail WHERE type = 'Medlem'"
end if

Prøv dette - håber at du nu lykkes.

MVH
Supertekst
Avatar billede supertekst Ekspert
17. januar 2006 - 12:55 #13
OBS - koden vedr. Msgbox skal altså fjernes
Avatar billede izemate Nybegynder
17. januar 2006 - 13:28 #14
jeg fik hjælp af en anden bruger herinde fra..
men du får point alligevel..
tak for din hjælp..
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