![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 17.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Czesć,
Sprawa jest następują - otóż, potrzebuję wykonac tzw autoresponder i mam problem logiczny, bo nie wiem jak ugryźć ten problem. Mam stronę WWW i na niej formularz do zapisu w formie: "Wpisz imię oraz adres email, a zostaneisz zapisany" - i ludzie, któzy zatwierdzą formularz zapisują się na kurs przeze mnie prowadzony. Wszystko trzymam w bazie danych i z tym problemu nie mam. probem jest w tym, że chcę wysyłac co tydzień nowa lekcję do każdego zapisanego. W tym momencie moge słać mailingi masowe, ale ja chcę robić coś takiego, że ktoś zapisze się 1 stycznia i 7 stycznia otrzymuje drugą lekcję, a ktoś zapsize się 2 stycznia, to ósmego stycznia otrzyma drugą lekcję. Chcę by to działo się schematycznie: Zapis ze strony WWW + pierwsza lekcja na email 7 dnia od zapisania - 2 leckja na email 14 dnia od zapisania - 3 lekcja na email 21 dnia od zapisania - 4 leckja na email itd. Chciałbym, by to ile dni ma iśc przesyłka po przesyłce było niezależne od tego kiedy się kto zarejestrował. Coś takiego jak implebot.pl (działanie). Może coś pomożecie ? Pozdro, Maniek Ten post edytował Maniek159 16.05.2010, 23:13:33 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Czyli rozumiem, że lekcje mają być wysyłane dla każdego użytkownika w innym czasie, co 7dni od daty jego rejestracji
Ja bym spróbował tak: - pierwszą lekcję wysyłasz od razu po rejestracji - ustawiasz crona, aby codziennie w nocy sprawdzał czy trzeba komuś coś wysłać, czyli: 1. pobierasz z bazy użytkowników i odejmujesz od obecnej daty datę rejestracji - możesz to zrobić np. funkcją mysql DATE_DIFF, która zwróci różnicę wyrażoną w dniach -> http://dev.mysql.com/doc/refman/5.1/en/dat...nction_datediff - lub w php: 2. dla każdego pobranego rekordu sprawdzasz czy ta różnica dzieli się bez reszty przez 7 ( bo chcesz wysyłać raz w tygodniu), jeżeli tak to ten rekord zapisujesz sobie do tablicy oraz zapisujesz wynik dzielenia i dodajesz 1, bo to będzie numer lekcji
otrzymasz tablicę z użytkownikami, którzy zapisali się 7,14,21,28.....dni od rejestracji, lesson_number to oczywiście numer lekcji, którą trzeba wysłać temu użytkownikowi Ten post edytował tehaha 17.05.2010, 00:15:36 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 17.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
@up - bardzo dziękuję za pomoc, w tym momencie może i by działało, ale co zrobić w momencie kiedy __ miałby postać:
1 lekcja - zaraz po rejestracji 2 lekcja - 3 dni po poprzedniej lekcji 3 lekcja - 8 dni po poprzedniej lekcji 4 lekcja - 4 dni po poprzedniej lekcji itd. Czyli nie mamy powiedziane, że jest to 7 dni, a losowa liczba z przedziału 1-10, bo chciałbym dac użytkownikom mozliwość ile dni ma iśc mail po mailu i wszysto ustawiane indywidualnie, i tutaj mam jeszcze wiekszy problem. Z zaprogramowaniem nie będe miał problemu, tylko jak to __ ugryźć. Btw: wazne są dla mnie aspekty optymalizacyjne, w bazie mam teraz prawie 12 tys. abonentów.
Powód edycji: [thek]: [thek]: to nie onet. Kulturalniej proszę...
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
W takim razie zrobiłbym to inaczej, jeżeli każdy user może dowolnie ustawić sobie że np. lekcje 1,2,3,4,5 będą przychodziły sobie w odstępach 5,9,2,6,4 dni , czyli całkowicie niezależnie to stworzyłbym dodatkową tabelę z użytkownikiem, datą wysłania lekcji i numerem lekcji, czyli od razu po tym ustawieniu przez użytkownika wyliczyłbym datę dla każdej lekcji, np:
potem, zapis do tabeli: Tabela date_lesson_user_assoc id | user_id | lesson_number | lesson_datetime i wtedy cronem codziennie pobierasz te rekordy gdzie lesson_datetime = $today, robisz LEFT JOIN na tabelę z użytkownikami, żeby pobrać nazwę użytkownika i adres e-mail, i wysyłasz każdemu co trzeba, można by jeszcze dodatkowo wprowadzić kolumnę lesson_sent z wartością 1 lub 0, aby po wysłaniu maila zapisać, które maile zostały wysłane, Ten post edytował tehaha 17.05.2010, 10:38:37 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 01:27 |