Zdravim vsechny.Mam maly problem. Ve formulari mi lide zadavaji datum ve formatu napr 02-11-2004 a takhle se to zapise do databaze. A ja potrebuju porovnat datum v tomhle formatu s aktualnim datem a vsechny mensi data odmazat.Ale pokud udelam 02-11-2004<03-11-2004 tak mi to vyhodnoti pouze do prvni pomlcky. Jak se tedy porvna takovyto zapis.Ktery z nich je mesi a ketry vetsi (mineni casove)
Diky Petr
Mě to normálně funguje, zkus ty data dát do proměnných a pak porovnáva ty proměnný.
to jsem zkousel.On to porovna ale pokud udelas napr
02-11-2004<03-11-2004 tak ti vrati true to je v poho ale pokud udelas 02-11-2004<01-12-2004 tak ti vrati false.Jelikoz porovna jen tu 02 a 01 a to potom uz nëbere to jako datum
Já bych neřekl, že je to tím, že to porovnává pouze 02 a 01. měl jsem nedávno podobný problém, ikdyž ne tenhle, ale týkalo se to také řazení datumu.
Protože zapis, který bude začínat 02 bud vždycky větší než ten, co začíná 01 a proto nebude menší a hodí ti to false. Já to vyřešil tak, že jsem obrátil den a měsíc a pak by to vypadalo 11-02-2004<12-01-2004
Teď by to mělo vyhodnotit dobře a když to bude někde třeba, tak si jednoduše ten zápis upravíš zase naopak ( Já jsem to udělal třeba pomocí substr() ) ;-)
Eagleeye: JJ, to bude ono, já data porovnávám ve stejnym formátu co vyleze s fce CURDATE(), tj. 2004-11-02.
Takže to určitě jen stačí přehodit.
Jo, udělej například z data 02-11-2004 následující: 20041102
To lze pak jednoduse porovnat.
Lucas: Ono je celkem jedno, jestli to zapíšeš tak nebo tak, protože pokud bude porovnávat např. 02-11-2004 a 02-12-2004 tak pomlčka pro něj bude jeden a ten samý znak, takže bude rozhodovat stejně podle toho dalšího ;-)
jaká pomlčka?! v čísle 20041102 není žádná pomlčka.
Prostě to datum zbavíš pomlček.
nebo to převeďte do Greenwichského času(nevím, jestli to je dobře napsané) a už je to hračka. Jdou pak z toho vyndat i jiné formáty data
imho pokud mas v promenej 02-11-2004, tak se to bude porovnavat jako znakovej retezec, ne jako datum
musis to prevest na retezec kde bude rok-mesic-den, nebo na ciselnou hodnotu
to cb: to se taky celou dobu snažim říct, ať z toho udělá rrrrmmdd
jasne ze musi udelat rrrrmmdd (od nejvetsiho po nejmensi), protoze PHP porovnanava cisla, takze misto 01.11.2004<02.11.2004 vyhodnocuje intval(01.11.2004)<intval(02.11.2004) , takze vlastne 1<2. Neco podobneho jak rikas by slo v mysql, pokud by sloupec byt typu date.
int mktime ( [int hodina [, int minuta [, int sekunda [, int mesiac [, int den [, int rok [, int is_dst]]]]]]])
datum=explode("-","02-12-2004");
hodina=1;
minuta=1;
sekunda=1;
mesiac=datum[1];
den=datum[0];
rok=datum[2];
is_dst netreba
viac v manuále k PHP
<HTML>Petr: to porovnani a mazani provadis (chces provest) primo v MySQL dotazu?</HTML>