Avatar billede Slettet bruger
26. marts 2002 - 23:02 Der er 26 kommentarer og
1 løsning

Burde virke...Eller hvad?

Hej!
Jeg har en funktion der gør (burde gøre) at alle brugere, som i deres indstillinger har oplyst at de vil modtage en mail hver gang der bliver indrykket en annonce, som matcher en række kriterier de selv vælger, så får de en mail om det...
Det virker bare ikke :(
Koden er her:
**********************************
    strAmt      = RemoveHTML(DeMessSQL(Trim(Request.Form("Amt"))))
    strBoligtype     = RemoveHTML(DeMessSQL(Trim(Request.Form("Boligtype"))))
    strAreal      = RemoveHTML(DeMessSQL(Trim(Request.Form("Areal"))))
    strRum        = RemoveHTML(DeMessSQL(Trim(Request.Form("Rum"))))
    strPris        = RemoveHTML(DeMessSQL(Trim(Request.Form("Pris"))))
    strBeskrivelse     = RemoveHTML(DeMessSQL(Trim(Request.Form("Beskrivelse"))))
    strEmail     = RemoveHTML(DeMessSQL(Trim(Request.Form("Email"))))
    strTelefon     = RemoveHTML(DeMessSQL(Trim(Request.Form("Telefon"))))
    strRygning     = RemoveHTML(DeMessSQL(Trim(Request.Form("Rygning"))))
    strHusdyr     = RemoveHTML(DeMessSQL(Trim(Request.Form("Husdyr"))))
    strIP = Request.ServerVariables("REMOTE_ADDR")
    strTimenow    = Now()
    strSetantalgange = "1"
    strAnnoncetype = "soeger"
    strLastInsertID = "select * from tbl_annoncer WHERE annoncetype = 'har' LIMIT 1"
    If session("login") = "yes" Then
    strIndrykketaf = Session("id")
    Else
    strIndrykketaf = ""
    End If

    '//Hardcore validering af formular

    If Not IsNumeric(strAreal) Then
    Response.Redirect("indryk.asp?option=00&error=FEJL : Du har ikke indtastet en numerisk værdi i feltet Min. areal m²")
    ElseIf Not IsNumeric(strRum) Then
    Response.Redirect("indryk.asp?option=00&error=FEJL : Du har ikke indtastet en numerisk værdi i feltet Min. antal rum")
    ElseIf strPris = "" Then
    Response.Redirect("indryk.asp?option=00&error=FEJL : Du har ikke noget i feltet Max pris/måned")
    ElseIf strBeskrivelse = "" Then
    Response.Redirect("indryk.asp?option=00&error=FEJL : Du har ikke indtastet noget i feltet Lidt om dig/jer selv")
    ElseIf validateEmail(strEmail) = False Then
    Response.Redirect("indryk.asp?option=00&error=FEJL : Du har ikke skrevet en gyldig Email adresse ")
    ElseIf Not IsNumeric(strTelefon) Then
    Response.Redirect("indryk.asp?option=00&error=FEJL : Du har ikke indtastet en numerisk værdi i feltet Telefon")
    ElseIf strRygning = "" Then
    Response.Redirect("indryk.asp?option=00&error=FEJL : Du har ikke udfyldt feltet Rygning")
    ElseIf strHusdyr = "" Then
    Response.Redirect("indryk.asp?option=00&error=FEJL : Du har ikke udfyldt feltet Husdyr")
    End If

    strSQL = "INSERT INTO tbl_annoncer (amt,boligtype,areal,rum,pris,beskrivelse,email,telefon,dato,rygning,husdyr,setantalgange,annoncetype,indrykketaf,ip) VALUES ("
    strSQL = strSQL & "'" & strAmt & "',"
    strSQL = strSQL & "'" & strBoligtype & "',"
    strSQL = strSQL & "" & strAreal & ","
    strSQL = strSQL & "" & strRum & ","
    strSQL = strSQL & "'" & strPris & "',"
    strSQL = strSQL & "'" & strBeskrivelse & "',"
    strSQL = strSQL & "'" & strEmail & "',"
    strSQL = strSQL & "" & strTelefon & ","
    strSQL = strSQL & "'" & strTimenow & "',"
    strSQL = strSQL & "'" & strRygning & "',"
    strSQL = strSQL & "'" & strHusdyr & "',"
    strSQL = strSQL & "'" & strSetantalgange & "',"
    strSQL = strSQL & "'" & strAnnoncetype & "',"
    strSQL = strSQL & "'" & strIndrykketaf & "',"
    strSQL = strSQL & "'" & strIP & "');"

    'Response.write(strSQL)
    Conn.Execute(strSQL)

    'her åbnes til abbonement databasen


        SQLstmt = "SELECT * FROM tbl_users WHERE abbo_mail_sted = '" & strAmt & "' AND abbo_mail_type = '" & strBoligtype & "' AND abbo_mail_status_modtage = 'tilmeldt' AND abbo_mail_status = 'har'"
    Response.write(SQLstmt)
        Conn.Execute(SQLstmt)
        Set rs = Conn.Execute(SQLstmt)

    'looper resultatet

        DO WHILE NOT rs.EOF
        navn = rs("Navn")
        email = rs("Email")
        on error resume next


    'her starter jmail indholdet sendes via email

   
        Set JMail = Server.CreateObject("JMail.SMTPMail")
        JMail.ContentTransferEncoding = "8bit"
        JMail.Charset = "ISO-8859-1"
       
        JMail.Priority = 1
        JMail.ServerAddress = "websmtp.boligtavlen.dk"
        JMail.Sender = "mailrobot@boligtavlen.dk"
    JMail.SenderName = "Boligtavlen Mailrobot"
        JMail.Subject = "Ny bolig på boligtavlen.dk"
    JMail.AddRecipient email
        JMail.Body = "Hej " & navn & " " & vbCrLf & "Der er netop nu indrykket boligannonce på boligtavlen.dk, som matcher dine kriterier " & vbCrLf
        JMail.Body= JMail.Body + "- " & strBoligtype & " " & vbCrLf
        JMail.Body= JMail.Body + "- " & strAmt & " " & vbCrLf
        JMail.Body= JMail.Body + "Klik her for at se den : http://boligtavlen.dk/sedetaljer.asp?option=2&annonceID=" & strLastInsertID & " " & vbCrLf
    JMail.Body= Jmail.Body + "Mvh. boligtavlen.dk " & vbCrLf

        JMail.Execute
        set JMail = nothing
    set SQLstmt = nothing

        rs.MoveNext
        LOOP
        RS.Close
**********************************
Jeg får ingen fejlmelding, der bliver bare ikke sendt mail til de brugere hvis kriterier matcher.
Jeg har på fornemmelsen at det har noget at gøre med at jeg har givet brugeren lov til f.eks at "abbonnere" på flere boligtyper af gangen, således at der i databasen kommer til at stå Andelsbolig, Lejebolig, Værelse hvis det er det han/hun har valgt.
Når den som vil udleje/sælge, derimod vil indrykke en annonce, har han/hun kun mulighed for at vælge een boligtype... Anywayz - jeg ville blive MEGET glad hvis nogen kan hjælpe mig her :o)
Avatar billede Slettet bruger
26. marts 2002 - 23:13 #1
Nej for du får jo bare en lang streng med email adresser ala:

dd@sdf.dkgd@dg.comdsf@dg.dk osv.
Avatar billede s_raagaard Nybegynder
26. marts 2002 - 23:15 #2
Hvis man kan vælge flere boligtyper ad gangen, så er det sikkert derfor (som du selv antager) så skal/kan du f.eks. loope igennem disse før du forespørgeri db'en og udsender mail.

for each item in strBoligtype
    'her kommer så din SELECT og mail kode
next

Så søger den på hver bolitype som så er valgt.


/s
Avatar billede Slettet bruger
26. marts 2002 - 23:16 #3
schulze > Hvorfor mener du det?
Avatar billede Slettet bruger
26. marts 2002 - 23:19 #4
Prøv at Response.write din email variabel
Avatar billede Slettet bruger
26. marts 2002 - 23:24 #5
Er ved at gå helt kold - s_raagaard, har du evt tid til at ordne det over mail?
Avatar billede coltau Juniormester
26. marts 2002 - 23:26 #6
Du har nok selv fat i noget med hensyn til at recordsettet er tomt. Hvis det er korrekt at der i feltet, abbo_mail_type kan stå flere ord så er det ikke sikkert at du finder nogle der matcher når du kun søger på et af ordene.

Så skal du anvende LIKE.

SQLstmt = "SELECT * FROM tbl_users WHERE abbo_mail_sted = '" & strAmt & "' AND abbo_mail_type LIKE '%" & strBoligtype & "&' AND abbo_mail_status_modtage = 'tilmeldt' AND abbo_mail_status = 'har'"

Men - det kan jo også være at det er din JMail ikke virker. ?
Avatar billede Slettet bruger
26. marts 2002 - 23:31 #7
coltau > Er nu ret sikker på at min Jmail virker - det gør den i hvert fald i andre sammenhænge og det er samme config, men i øvrigt når den jo ikke engang til det sted hvor Jmailen skal eksekveres?!
Mht til LIKE, så lyder det måske meget fornuftigt...
Avatar billede coltau Juniormester
26. marts 2002 - 23:34 #8
LIKE er også ligeglad med store og små bogstaver. Det kan nogle gang evære en fordel.
Avatar billede Slettet bruger
26. marts 2002 - 23:37 #9
coltau >Hvad siger du til s_raagaards løkke?
Avatar billede coltau Juniormester
26. marts 2002 - 23:41 #10
den gør det modsatte af min. Den tager udgangspunkt i at variablen, strBoligtype indeholder alle typerne på en gang. Det går jeg ikke ud fra.
Jeg går ud fra at feltet, strBoligtype kun indeholder en type - men at der kan være flere typer i samme felt (abbo_mail_type) i databasen.
Avatar billede Slettet bruger
26. marts 2002 - 23:46 #11
coltau > implicit at dit forslag er bedre, sån logisk set ;o)
Avatar billede Slettet bruger
27. marts 2002 - 00:04 #12
coltau > Nu har jeg indsat dit forslag, men der er stadig ikke noget at komme efter :(
Avatar billede Slettet bruger
27. marts 2002 - 00:06 #13
coltau > Ved Response.Write af SQLstmt får jeg
SELECT * FROM tbl_users WHERE abbo_mail_sted = 'København' AND abbo_mail_type LIKE '%Andelsbolig&' AND abbo_mail_status_modtage = 'tilmeldt' AND abbo_mail_status = 'har'
Jeg ved at der findes en bruger hvor betingelserne er opfyldt, men alligevel sker der intet?!
Avatar billede coltau Juniormester
27. marts 2002 - 00:38 #14
Den skal virke. Det eneste jeg kan komme i tank eom er at der måske skal et %-tegn på mere. Jeg kan jo ikke se indholdet af din database.

LIKE '&Andelsbolig%'

Hvad med store og små bogstaver i de andre felter. (København, tilmeldt, har)

Sorry - jeg skal Zzzzzzz - men jeg checker lige i morgen tidligt.
Avatar billede Slettet bruger
27. marts 2002 - 12:43 #15
Fordelingen af store og små bogstaver er ens i tbl_annoncer & tbl_users
Avatar billede Slettet bruger
27. marts 2002 - 12:50 #16
LIKE '&Andelsbolig' har det også kun en % ?
Avatar billede coltau Juniormester
27. marts 2002 - 14:01 #17
Der skal være 2 i dit tilfælde.

LIKE 'Andelsbolig%' betyder at du får alle dem der starter med andelsbolig
(andelsbolig / andelsbolig, typehus)
LIKE '%Andelsbolig' betyder at du får alle dem der slutter med andelsbolig
(andelsbolig / typehus, andelsbolig)
LIKE '%Andelsbolig%' betyder at du får alle dem der indeholder med andelsbolig
(andelsbolig / typehus, andelsbolig / typehus, andelsbolig, andet)

Du skal bruge den sidste model.
Avatar billede Slettet bruger
28. marts 2002 - 15:48 #18
Prøver igen i aften om det virker... Kunne du (coltau) eventuelt overtales til at korrespondere via mail?
Avatar billede coltau Juniormester
28. marts 2002 - 19:10 #19
Hvis jeg har tid - ccc@post11.tele.dk
Jeg har desværre været uheldig en gang  hvor jeg ikke kunne findes tiden.
Avatar billede Slettet bruger
28. marts 2002 - 21:07 #20
nå coltau, nu har jeg så prøvet igen, og får denne fejl :
SELECT * FROM tbl_users WHERE abbo_mail_sted = 'Bornholm' AND abbo_mail_type LIKE '%Andelsbolig%' &' AND abbo_mail_status_modtage = 'tilmeldt' AND abbo_mail_status = 'har'
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[TCX][MyODBC]You have an error in your SQL syntax near 'tilmeldt' AND abbo_mail_status = 'har'' at line 1
Avatar billede Slettet bruger
28. marts 2002 - 21:27 #21
Doh ! Det var nok her den smuttede &' efter LIKE '%Andelsbolig%'
Det virker sgu nu :o)
Har bare et problem : URL'en som den respektive bruger modtager ser sådan ud :
sedetaljer.asp?option=2&annonceID=SELECT * FROM tbl_annoncer WHERE annoncetype = 'har' LIMIT 1
Og det er jo ikke meningen ):
Hvordan kan jeg sikre mig at den querystring "annonceID" bliver = den netop indrykkede?
Avatar billede Slettet bruger
28. marts 2002 - 21:39 #22
altså jeg har strLastInsertID = "select * from tbl_annoncer WHERE annoncetype = 'har' LIMIT 1"
hvilket var et rent gæt, men det virker åbenbart ikke.
Avatar billede coltau Juniormester
28. marts 2002 - 22:04 #23
Vil du sende en SQL-sætning med i linket. ?
Er det ikke bedre at finde ID frem og så nøjes med at sende det med. Hvis nu der indsættes flere annoncer før vedkommende trykker på linket så får de jo ikke den rigtige annonce.

Lige her kan du finde ID:

    Conn.Execute(strSQL) ' Indsætter annoncen i DB
    Set rs = Conn.Execute("select max(id) from tbl_annoncer")
    tbl_annoncer = RS(0) ' gemmer ID for sidst indsatte annonce som så sendes med i linket.
   
    'her åbnes til abbonement databasen

Eller har jeg misforstået.
Avatar billede Slettet bruger
28. marts 2002 - 22:07 #24
"Er det ikke bedre at finde ID frem og så nøjes med at sende det med. Hvis nu der indsættes flere annoncer før vedkommende trykker på linket så får de jo ikke den rigtige annonce."
Jo for ID'et er jo unikt for den pågældende annonce, så jeg forstår ikke helt hvad du mener?!
Avatar billede Slettet bruger
28. marts 2002 - 22:16 #25
coltau > Det virker.. Lidt.. Nu får brugeren en mail med URL'en
sedetaljer.asp?option=2&annonceID=6
selvom dén netop indrykkede annonce har id 13
Avatar billede Slettet bruger
28. marts 2002 - 22:27 #26
Det virker nu. 1000 tak for hjælpen coltau.. Jeg er godt nok imponeret over hvor meget styr du har på det!
Avatar billede coltau Juniormester
28. marts 2002 - 22:54 #27
Du har jo haft det her ? kørende et par dage (og et par andre) så jeg har jo haft tid nok til at se hvad det går ud på.
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