Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
#1 · Zasláno: 9. 7. 2013, 00:38:22
Když mám v databázi defaultně záznam u datumu 0000-00-00, tak si s ním funkce date() neví nějak rady.
echo date('d.m.Y', strtotime($db['datum'])); 00.00.0000 tak tam hodí tenhle nesmysl: 30.11.-0001
Je tam někde chyba?? |
||
Tori Profil |
quatzael:
„Místo, aby očekávaně vygenerovala: 00.00.0000“ Očekávané by mělo být spíš "01.01.1970", ne? edit: je to jinak, viz můj další post. |
||
Jan Tvrdík Profil |
#3 · Zasláno: 9. 7. 2013, 02:07:07
quatzael:
„Když mám v databázi defaultně záznam u datumu 0000-00-00“ Tak to máš špatně, správné řešení je mít tam NULL . Datum 0000-00-00 ani 00.00.0000 neexistuje, takže jakákoliv práce s ním jako s datem nedává z principu (že to není datum) smysl.
|
||
quatzael Profil |
#4 · Zasláno: 9. 7. 2013, 02:20:57
Jan Tvrdík:
Tam mám teda nějak nastavit defaultně hodnotu NULL přímo v tý dabázi nebo kontrolovat proměnný před tím, jestli náhodou samy obsahují nějaké datum? Protože to jsou všechno hodnoty z inputů a ta hodnota 0000-00-00 pochází z nevyplněných inputů (které správně mají zůstat nevyplněné) |
||
ts_istudio Profil |
#5 · Zasláno: 9. 7. 2013, 08:32:46
quatzael:
Testuj přímo $db['datum']. Když bude "0000-00-00", vypiš něco jako "datum nevyplněno" a nějakým date a strtotime se vůbec nezabývej. |
||
Tori Profil |
#6 · Zasláno: 9. 7. 2013, 08:55:30
quatzael:
Jinak pokud používáte nulové hodnoty pro neznámou část data (např. 2013-05-00 = někdy v květnu), tak by asi bylo spolehlivější s tím pracovat jako s řetězcem (explodovat na jednotlivé části), než převádět na unix timestamp (strtotime chápe 2013-05-00 jako "den před 2013-05-01", tedy 2013-04-30. Proto se taky 0000-00-00 převedlo na 30.11.-1).
|
||
quatzael Profil |
#7 · Zasláno: 9. 7. 2013, 11:46:46
Tori:
„Proto se taky 0000-00-00 převedlo na 30.11.-1“ Aha.. Nulové hodnoty pro neznámé části data nepoužívám. Prostě buď je v inputu vyplněné cele datum nebo je tento input vynechán.. |
||
Časová prodleva: 11 let
|
0