Avatar billede and_ Nybegynder
01. december 2003 - 15:11 Der er 22 kommentarer og
1 løsning

Nyhedsbrev med flere grupper

Halløjsa i det lille ganske land.....

Jeg har nu siddet i mit lille skur ude på den fynske hede og spekuleret så længe at folk tror jeg er en bæver pga. skæg og lange negle.... Nå til det seriøse:

JEg har en base, hvor jeg har en tabel med tilmeldte mailadresser, samt et autoID-felt.

Derudover har jeg også en tabel der hedder grupper, hvor folk kan tilmelde sig nogle forskellige kategorier. FX: driftstatus, nyheder, ølbæller osv.

Hvis jeg så vælge at sende et nyhedsbrev til fx: driftstatus og ølbæller, vil den jo som sagt sende en mail til alle tilknyttede mails til de forskellige grupper, men hvis der er en bruger der er tilknyttet både driftstatus og ølbæller vil denne bruger modtage en mail 2 gange (flere hvis det er flere grupper...)....

Hvordan kan jeg lave et tjek på at brugeren kun optræder en enkelt gang???

Brugeren ligger i et MEMO-felt (notat), hvor brugerne ligger kommaseparerede....

Lad høre vismænd

;)

PS: Komponent der skal benyttes til at sende mails: Jmail
Vi finder bare ud af points'ene
Avatar billede chriscross Nybegynder
01. december 2003 - 15:27 #1
Du er nok nødt til at komme med lidt flere oplysninger om din databasestruktur samt hvilken database du bruger ?

Hvordan er forbindelsen mellem emailadresse, kategori og brugere..
Avatar billede and_ Nybegynder
01. december 2003 - 15:51 #2
Jeg prøver:

tilmeldte: id = autoID, tilmeldt = tekstfelt
grupper: id = autoID, grupper = tekstfelt, users = Memofelt


Tilmeldt i tabellen tilmeldt indeholder emailadressen

users i tabellen grupper indeholder emailadressens id fra tabellen tilmeldt....

Det der så skal ske er et tjek på om der er nogen dubletter i de valgte grupper.

hvis emailadressen no@no.no har autoID 8 og han er tilmeldt flere grupper vil det fx se sådan her ud:

grp1 = "4,6,9,5,2,3,8"
grp2 = "45,32,8,154,15,5"
grp3 = "98,32,15,48,1,8,1"

Nu optræder 8 i alle 3 grupper som skal sendes til. Når man har lavet tjekket har jeg fx. en variabel til hvor alle er samlet uden dubletter:
grpstr = "4,6,9,5,2,3,45,32,154,15,98,15,48,1,8"

Herefter henter jeg bare mailsene fra basen via id'en igennem en løkke....
Avatar billede gurvic Nybegynder
01. december 2003 - 17:39 #3
hvad med at bruge en distinct når du henter fra db
Avatar billede and_ Nybegynder
01. december 2003 - 19:16 #4
distinct?

definer :)
Avatar billede deeflate Nybegynder
01. december 2003 - 23:19 #5
Siden du har brugerne samlet i en streng, kan du gøre som her: http://www.eksperten.dk/spm/427428
Tjekke med InStr om du allerede har tilføjet brugerens id til strengen, og hvis du har, ja så tilføjer du den naturligvis ikke igen :)
Avatar billede deeflate Nybegynder
01. december 2003 - 23:25 #6
Lidt info om distinct: http://www.w3schools.com/sql/sql_select.asp (ca. midt på siden).
Avatar billede deeflate Nybegynder
01. december 2003 - 23:30 #7
Men så skal brugernes id'er stå i seperate felter, så det (select ditinct) dur altså ikke, hvis de, som jeg har forstået det, står i en kommasepareret streng inde i db'en.
Avatar billede and_ Nybegynder
03. december 2003 - 13:48 #8
Hmmmmm, jeg kiggede på den reference du gav, men jeg synes ikke lige at jeg kan få det til at fungere.... Jeg har brygget denne lille test samme:

<%
testgrpstr = "98,32,15,48,1,8,1,45,32,8,154,15,5,4,6,9,5,2,3,8"
grpstr = split(testgrpstr, ",")
antal = Ubound(grpstr)
i = 0
response.write "Den gamle string er: " & testgrpstr & "<br><br>Den nye string er: "
do while i <= antal
    if InStr(testgrpstr, grpstr(i)) = 0 then
        sentto = sentto & grpstr(i) &","
    end if
i = i + 1
loop
response.write sentto
%>
Avatar billede deeflate Nybegynder
03. december 2003 - 14:45 #9
Du skal teste på strengen sentto, hvor du jo tilføjer dem, og du skal inkludere kommaet i betingelsen (ellers tæller 154 som både 1, 5, 15 osv.) - altså sådan her:

<%
testgrpstr = "98,32,15,48,1,8,1,45,32,8,154,15,5,4,6,9,5,2,3,8"
grpstr = split(testgrpstr, ",")
antal = Ubound(grpstr)
i = 0
response.write "Den gamle string er: " & testgrpstr & "<br><br>Den nye string er: "
do while i <= antal
    if InStr(sentto, "," & grpstr(i) & ",") = 0 then
        sentto = sentto & grpstr(i) & ","
    end if
i = i + 1
loop
response.write sentto
%>
Avatar billede deeflate Nybegynder
03. december 2003 - 14:47 #10
Jeg har tilføjet komma på begge sider af tallet i betingelsen, da f.eks. "48," ellers ellers også vil tælle som "8,".
Avatar billede and_ Nybegynder
03. december 2003 - 15:12 #11
det var dejligt ;)

Jeg takker for svaret... Så skal jeg bare lige have den flikket sammen med alt det andet......
Avatar billede deeflate Nybegynder
03. december 2003 - 15:23 #12
Ja, det er jo lige det ;)

Jeg takker for point :)
Avatar billede deeflate Nybegynder
03. december 2003 - 15:23 #13
Men det ser nu ud til at være lige til...
Avatar billede and_ Nybegynder
04. december 2003 - 16:47 #14
Nu håber du er der deeflate, but here it goes:

Funktionen virker ikke helt endnu: 

Output:

Den gamle string er:  1,2,3,4,8,1,4,7
    Den nye string er: 1,2,3,4,8,1,7

Kildekode:

hent2 = "1,2,3,4,8,1,4,7"
        response.write hent2 & "<br><br>"
        grpstr = split(hent2, ",")
        antal = Ubound(grpstr)
        i = 0
        response.write "Den gamle string er: &nbsp;" & hent2 & "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Den nye string er: "
        do while i <= antal
        if InStr(sendTil, "," & grpstr(i) & ",") = 0 then
        sendTil = sendTil & grpstr(i) & ","
        end if
            i = i + 1
        loop
        If Right(sendTil, 1) = "," Then
          sendTil = Left(sendTil, (Len(sendTil) - 1))
        End If
        response.write sendTil
Avatar billede deeflate Nybegynder
04. december 2003 - 17:49 #15
<%
hent2 = "1,2,3,4,8,1,4,7" ' rs("tilmeldt") eller grupper, eller hvad det felt nu hedder ;)

grpstr = split(hent2, ",")
i = 0
response.write "Den gamle string er: &nbsp;" & hent2 & "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Den nye string er: "

for i = 0 to UBound(grpstr)
  if InStr(sendTil, "," & grpstr(i) & ",") = 0 then
    sendTil = sendTil & grpstr(i) & ","

    'send mail her til bruger med grpstr(i) som id

  end if
next

If Right(sendTil, 1) = "," Then
  sendTil = Left(sendTil, (Len(sendTil) - 1))
End If

response.write sendTil
%>

Eller hvad...?
Hvad er det, der ikke helt fungerer?
Den sorterer da dubletter fra...
Avatar billede deeflate Nybegynder
04. december 2003 - 17:53 #16
Og når du så har flere strenge, som du har i eksemplet fra 01/12-2003 15:51:35, så kan du f.eks. slå dem sammen til én variabel før du kører sorteringen.
Altså så hent2 = grp1 & grp2 & grp3
Avatar billede and_ Nybegynder
05. december 2003 - 09:29 #17
det er også det jeg gør et andet sted i koden, men ligeså snart jeg kører den, får jeg:

Den gamle string er:  1,2,3,4,8,1,4,7
    Den nye string er: 1,2,3,4,8,1,7
Avatar billede and_ Nybegynder
05. december 2003 - 09:32 #18
den sortere godt nok 4 væk, men 1-tallet er der endnu
Avatar billede chriscross Nybegynder
05. december 2003 - 09:35 #19
Du er nødt til at sætte et komma i starten og slutningen af sendTil før din test hvis den skal kunne fjerne dubletter i enderne
Avatar billede and_ Nybegynder
05. december 2003 - 09:36 #20
hvis jeg markerer alle grupper ser outputtet ud som fælger:

Den gamle string er:  1,2,3,4,8,1,4,7,1,2,3
  Den nye string er: 1,2,3,4,8,1,7
Avatar billede and_ Nybegynder
05. december 2003 - 09:43 #21
sådan:

        do while i <= antal
        if InStr("," & sendTil, "," & grpstr(i) & ",") = 0 then
        sendTil = sendTil & grpstr(i) & ","
        end if
            i = i + 1
        loop

Det virker
Avatar billede deeflate Nybegynder
05. december 2003 - 10:18 #22
OK, på den måde :)

Glimrende løsning, and_.
Og så kan du godt komme ud og klippe negle og skæg ;)
Avatar billede and_ Nybegynder
05. december 2003 - 10:21 #23
ahhh, det var dejligt, men solen skærer godt nok meget i øjnene ;)
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