Autor Zpráva
visionic
Profil *
Ahoj,

chtěl jsem se zeptat, když v mysql porovnávám sloupec (date) s now(). To znamená pokud sloupec vetsi nez hodnota now stává se člen premium, ale chtěl bych vytvořit, že chci přidat sloupci navíc půl roku. Napadlo mě přepočítat to na vteřiny a přidat to, ale chyba nastává při přestupném roce nebo v samotném únoru, ne vždy má měsíc 30 dnů. Jak se tohle řeší?

Děkuji za pomoc.
juriad
Profil
Zamysli se nad definicí půl roku. Co je půl rok? Je to floor(365/2) dnů, je to 6 měsíců?

Mysql umí například příčítat date_add(sloupec, INTERVAL 6 MONTH).
visionic
Profil *
juriad:
první příklad bych viděl vcelku logický, ale to co jsem potřeboval je přičítat date v mysql, takže mi to velice pomohlo.
visionic
Profil *
juriad:
Jsem asi úplně tupý. Nějak nedokáži sestrojit UPDATE mysql, pomocí toho date_add.

mysql_query("UPDATE $tabulka SET member = 'date_add(member, INTERVAL 6 MONTH)' WHERE id = '$id' LIMIT 1");
juriad
Profil
Odstraň všechny apostrofy.

Je to chytré přímo měnit tu hodnotu? Není lepší přidat nový záznam, který říká, že je členem od někdy do někdy, a kontrolovat, zda existuje alespoň jeden záznam, který vyhovuje aktuálnímu datumu? Tak bys znal historii všech členství na rozdíl od nějaké hodnoty, u které ani nevíš, jakým výpočtem vznikla.
lionel messi
Profil
visionic:
date_add je v tomto kontexte MySQL funkcia, nie reťazec, takže apostrofy preč. $id je zase číslo. Ešte pozor na chýbajúce escapovanie.
visionic
Profil *
juriad:
Nebráním se žádné metodě. Potřebuji docílit, že první platba (balíček 1/2 roku) přes API, mu nastaví členství od data nyní po dobu 6 měsíců a poté prodloužení, přičte k hodnoté stávající dalších 6 měsíců.

lionel messi:
Escapování zde je asi nepotřebné, nikde se neuváděj hodnoty přes formulář POST a ani GET, jediné je IDčko, které je ošetřeno od ESCAPOVÁNÍ a zároveň se nelze dostat na ID jiného uživatele. Jestli se pletu, samozřejmě přijmu radu na ošetření. Děkuji.


jinak, pokud hacker bude chtít útočit, tak i hodně zabezpečenou stránku položí .). Takže všude mám převody na entity a nahrazování uvozovek,středníků,... v případného vrácení. Takže běžná ochrana tam bude.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0