Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [problem logiczny] Jak zrobic autoresponder ?, Czyli jak to połączyć z baza mysql ?
Maniek159
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
tehaha
post
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:
  1. $date_diff = round((strtotime("now")-strtotime($row['register_date']))/86400);

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
  1. $users_for_mailing = array();
  2.  
  3. while($row = mysql_fetch_array($result))
  4. {
  5. $date_diff = $row['date_diff'];
  6. $user_email = $row['user_email'];
  7. $divide = $date_diff/7;
  8. $lesson_number = divide +1;
  9. if(is_int($divide))
  10. {
  11. $users_for_mailing[] = array('user_email'=>"$user_email", 'lesson_number'=>"$lesson_number");
  12. }
  13. }

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
Go to the top of the page
+Quote Post
Maniek159
post
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ę...
Go to the top of the page
+Quote Post
tehaha
post
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:
  1. $lesson_2 = date("Y-m-d", strtotime($register_date) + strtotime("4 days"));
  2. $lesson_3 = date("Y-m-d", strtotime($register_date) + strtotime("2 days"));
  3. $lesson_4 = date("Y-m-d", strtotime($register_date) + strtotime("7 days"));

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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 01:27