Opakované události v PHP

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod kódlisko 9. 8. 2009 10:32

Zdravím všechny, mám takový dotaz, potřeboval bych poradit, v tabulce eviduju poplatky (SŘBD je MYSQL 5), které ma dany subjekt platit, je to něco jako evidence firem a k nim poplatky ktere mají platit dejme tomu jednou měsíčně, jednou za 3 měsíce, jednou za 6 měsíců, jednou za 12 a 24 měsíců atd.
Nejsem si uplně jistý, jak v této tabulce zachytit nějak dobře tu skutečnost, že se má opakovat každý dejme tomu 6 měsíc od data vložení a hlavně jak potom CRONEM a skriptem zjist že od vložení události (sloupec typu DATE) uplynulo už přesně 6 měsíců a je třeba poslat email, upozornění, cokoliv a že například už od vložení uplynul rok a po roce už to neplatí ( to asi jednoduchou kolonkou active typu BOOLEAN čili TINYINT).

Děkuji za každou radu a návrh jak to správně udělat
Omlouvám se, jestli se to tady už řešilo ale nic použitelného jsem moc nenašel
HP 6510b 14", T7250,3GB ram,80Gb(7200ot),lightscribe mechanika,WXGA+ displej,travel battery
Delphi, C, JAVA,PHP--
má klávesnce je naprach, socialismus v troskách a ty si tu pouštíš draka...?!
kódlisko
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Vebloud 10. 8. 2009 12:27

Na vložení si dej timestamp, nebo sloupec, který má default hodnotu, která ti vytáhne datum z now nebo tak něc.
Jak zjistit, jestli už uběhlo 6 měsíců? Přidáš si sloupec last payment nebo tak něco, a při kontrole cronem si testneš, jestli je od doby vložení, nebo poslední platby už daný počet měsíců a máš jasno.

Co se ukládání intervalů, po jakých se mají uálosti opakovat, to záleží na tom, jak moc to chceš podrobné, pokud ti stačí měsíce, stačí ti sloupec, ve které bude počet měsíců, po kterých se to má opakovat, pokud těch intervalů budeš chtít víc na jednu firmu, tak spíš tabulka...
Žít a nechat žít, ty máš svůj názor, já mám svůj názor, já ti nebudu nutit svůj, nemusím souhlasit s tvým, ale udělám vše, abys ho mohl svobodně vyjádřit.
Vebloud
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod kódlisko 11. 8. 2009 11:38

Cituji:: "Co se ukládání intervalů, po jakých se mají uálosti opakovat, to záleží na tom, jak moc to chceš podrobné, pokud ti stačí měsíce, stačí ti sloupec, ve které bude počet měsíců, po kterých se to má opakovat, pokud těch intervalů budeš chtít víc na jednu firmu, tak spíš tabulka..."

Mohl bys to prosím trošku rozvést nic moc jsem z toho odstavce nepochopil?
HP 6510b 14", T7250,3GB ram,80Gb(7200ot),lightscribe mechanika,WXGA+ displej,travel battery
Delphi, C, JAVA,PHP--
má klávesnce je naprach, socialismus v troskách a ty si tu pouštíš draka...?!
kódlisko
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Vebloud 11. 8. 2009 13:10

No jednoduše, poku ti stačí u jedné firmy jeden interval placení a stačí ti interval zadaný pouze počtem měsíců (žádné týdny, dny apd). Tak stačí firmě přidat sloupec s počtem měsíců daného intervalu.

No a pokud chceš mít těch intervalů u jedné firmy víc, tak na to musíš mít další tabulku, ve které bude primární klíč firmy a interval, prostě normální vazba 1:N.
Žít a nechat žít, ty máš svůj názor, já mám svůj názor, já ti nebudu nutit svůj, nemusím souhlasit s tvým, ale udělám vše, abys ho mohl svobodně vyjádřit.
Vebloud
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod kódlisko 12. 8. 2009 13:17

Jj jasné to chápu dám se do toho dík :) Co když bych potřeboval i "mělčí" intervaly, čili třeba týdny atd?
HP 6510b 14", T7250,3GB ram,80Gb(7200ot),lightscribe mechanika,WXGA+ displej,travel battery
Delphi, C, JAVA,PHP--
má klávesnce je naprach, socialismus v troskách a ty si tu pouštíš draka...?!
kódlisko
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Vebloud 12. 8. 2009 15:35

Tak to bys potřeboval další sloupec, kde by byli intervaly v týdnech, analogicky třeba ve dnech. Pokud budeš chtít nějáké sofistikovanější intervaly, tak by to chtělo něco sofistikovanějšího, pak bych se asi inspiroval už nějakým hotovým kalendářem, nebo i třeba cronem. Podívat se jakým způsobem ukládá intervaly a vyhodnocuje, jestli je to ten správný den...

Sranda to bude až když budeš chtít intervaly kombinovat, například pondělí a čtvrtek ve 2. a 3. týdnu každého 4 měsíce lichého roku :lol:
Žít a nechat žít, ty máš svůj názor, já mám svůj názor, já ti nebudu nutit svůj, nemusím souhlasit s tvým, ale udělám vše, abys ho mohl svobodně vyjádřit.
Vebloud
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod kódlisko 13. 8. 2009 09:46

No sakra to bude sranda! :-D
HP 6510b 14", T7250,3GB ram,80Gb(7200ot),lightscribe mechanika,WXGA+ displej,travel battery
Delphi, C, JAVA,PHP--
má klávesnce je naprach, socialismus v troskách a ty si tu pouštíš draka...?!
kódlisko
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod kódlisko 13. 8. 2009 09:53

Ještě mně napadlo, to opakování po měsících mi bude v jedné věci stačit, ale uvědomil jsem si, budu mít datum vložení 25.3.2009 a opakování po 6 měsících, a teď mně napadlo, není to moc "hrubé" když nějakou metodou pro práci s časem zjistím nějaký rozdíl data například 1.9.2009 - to datum vložení čili 25.3.2009 tak zjistím, že rozdíl je 6 měsíců a pošlu notifikaci. Takhle by fungoval ten náš návrh, ale pro mne by bylo lepší aby ta událost nastala 25.9.2009 jak zajistit tuto podmínku?
ADD: tak už mne napadlo jak to pořeším elegantně, možná jsi to navrhoval i ty jen jsem to nepobral celé, udělam si sloupec něco jako nextaction_date a CRON každy den spustení si uděla něco jako resultset vsech akcí ktere mají nextaction_date na aktuální datum, provede notifikaci a uloží do nextaction_date zase další datum podle zadaného opakování.
HP 6510b 14", T7250,3GB ram,80Gb(7200ot),lightscribe mechanika,WXGA+ displej,travel battery
Delphi, C, JAVA,PHP--
má klávesnce je naprach, socialismus v troskách a ty si tu pouštíš draka...?!
kódlisko
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod Vebloud 13. 8. 2009 21:56

Next action je je docela elegantní a funkční řešení... Doporučuju mrknout do manuálu MySQL na funkce pro práci s datem, budou se hodit...
Žít a nechat žít, ty máš svůj názor, já mám svůj názor, já ti nebudu nutit svůj, nemusím souhlasit s tvým, ale udělám vše, abys ho mohl svobodně vyjádřit.
Vebloud
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod kódlisko 14. 8. 2009 07:11

Jo napadlo mne, že při vkládání události mohu ihned podle požadovaneho intervalu vypočítat další datum kdy se bude notifikovat a poté toto další datum bude vypočítávat skript spuštění CRONem při každém provedení této akce, nechápu jaktože mne to nenapadlo dříve
HP 6510b 14", T7250,3GB ram,80Gb(7200ot),lightscribe mechanika,WXGA+ displej,travel battery
Delphi, C, JAVA,PHP--
má klávesnce je naprach, socialismus v troskách a ty si tu pouštíš draka...?!
kódlisko
Mírně pokročilý
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků