Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rekordy w datach cyklicznych
wookieb
post
Post #1





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Mam za zadanie oprogramować ala "kalendarz" w którym jedna z funkcjonalności to możliwość tworzenia wpisów występujących cyklicznie.
Przykładowo dodajemy "Spotkania klasowe dnia 2010-09-02 18:00" -> "Powtórz co miesiąc" co spowoduje, że wydarzenie wystąpi w takich datach jak 2010-10-02 18:00, 2010-11-02 18:00 itd

Jak to zapisać w bazie to bym wiedział (nawet korzystając ze standardu http://en.wikipedia.org/wiki/Iso8601#Durations )
Tylko teraz jak sprytnie pobrać zdarzenia uwzględniąjąc ich cykliczność.
Rozwiązaniem byłoby generowanie zdarzeń naprzód ale chciałbym tego uniknąć.

Ten post edytował wookieb 2.09.2010, 12:37:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Nie wiem czy to by Ci odpowiadało, ale dla dat cyklicznych bym osobną tabelę zrobił i w niej trzymał te "dynamiczne". Sam niedawno miałem problem z dynamicznym dopasowywaniem grup użytkowników do mailingu. O ile zwykłe newslettery są oparte o sztywne przypisanie userów do określonych grup i wybiera się przy wysyłce grupę to ja miałem problem by robić to wobec grup dynamicznie zmieniających się. Ostatecznie tuż przed samą wysyłką wywołuję metodę, która do kolejki wrzuca listę userów wedle spreparowanego zapytania. Mykiem było zdefiniowanie grup, gdzie z tego powodu doszły 2 kolumny. Jedna określała typ grupy ( użytkownicy zapisani z newslettera normalnie albo dynamicznie dobierani z bazy ), a druga kryteria dynamicznego wyboru. U Ciebie odpowiednikiem byłoby 'static' (jednorazowe zdarzenia) i 'cyclic' (zdarzenia cykliczne), zaś kryterium częstotliwość zdarzenia (daily, monthly czy wariacje na temat co ileś dni). Ta druga jest niepusta tylko przy cyclic. Dopisywanie dat cyklicznych wiązało by się z przeliczaniem dat danego usera i sprawdzaniem mieszczenia się krotności dat w obserwowanym przedziale czasowym. Można by to zrobić na zasadzie "uzupełnij daty o te pasujące, których wciąż nie ma" z crona co ileś godzin w przód, usuwając zbyt stare jednocześnie, by nie zapchać bazy.
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.06.2026 - 11:12