Autor Zpráva
shinoba
Profil *
Ahoj,

z databáze beru čas, který ještě není nastavený a to: "0000-00-00 00:00:00" a chtěl bych právě ověřit jestli se rovná nule. Zkoušel jsem to přes strtotime, ale to vrátí "943916400". Dá se toho docílit nějakou funkcí?
nightfish
Profil
tohle nefunguje?
if ($datum == "0000-00-00 00:00:00")
shinoba
Profil *
to funguje, ale chtěl bych se tomu vyhnout, nepříjde mi moc elegatní vypisovat 12 nul
Školník
Profil
Nevypisuješ je jen jednou? :-)
shinoba
Profil *
ano, ale 12:-)

kdyby byla nějaká funkce typu

$timestamp = "0000-00-00 00:00:00"; //získáno z databáze
if(nejaka_funkce($timestamp) == 0) ....

tak mi to příjde elegantnější:-)
nightfish
Profil
function nejaka_funkce($ts) {
if ($ts == "0000-00-00 00:00:00") return 0;
else return 1;
}

teď už nemusíš psát 12 nul, stačí ten kód zkopírovat :-)
shinoba
Profil *
nightfish

hehe:-) díky
nightfish
Profil
shinoba
ještě by šlo na straně mysql použít
select unix_timestamp(sloupecsdatem)
problém je v tom, že to ti vrátí 0 pro jakékoliv datum starší než 1.1.1970
shinoba
Profil *
Teď jsem to zkoušel, ale nemám žádnej výstup...

$select = mysql_query("select unix_timestamp(time) FROM tabulka WHERE ... );
$result = mysql_fetch_assoc($select);

echo $result['online_time'];

bez toho unix_timestampu mi to vypíše datum na základě podmínky, s funkcí se nevypíše vůbec nic
nightfish
Profil
select unix_timestamp(time) as online_time FROM tabulka WHERE ...
shinoba
Profil *
teď už jo...jsem to zkoušel, při normálním čase, dejme tomu 2007-08-28 12:39:33 tak mám klasický timestamp 1188297573 a při 0000-00-00 00:00:00 mám výstup 0 a to je přesně co jsem potřeboval:-) mnohokrát díky
nightfish
Profil
shinoba
jak jsem již říkal - záleží na povaze datumů, které ukládáš - jestli je tam i něco před 1.1.1970 (třeba data narození apod.), tak mohou u funkce unix_timestamp() nastat problémy
shinoba
Profil *
není, doufám, že ne, to bych tam měl chybu:-) pro upřesnění, ukládám momentální čas, v případě, že v databázi ještě není uložen, sloupec v db je datetime a default je nastavenej právě na 0000-00-00 00:00:00, takže, když kontroluju záznam z db, tak vybírám jen ten jeden čas a když mi z 12 nul udělá jen jednu, tak je to dokonalý:-)
dracek
Profil
Hele a proč to neukládáš do db jako int timestampu? Zkrátilo by ti to kód a potíže okolo :)
shinoba
Profil *
dracek

není takovbej problém, když si vemeš, tak vše řeší jedna funkce v mysql. Jako je to taky možnost, ale v db je to pak přehlednější a v PHP se dá na to udělat funkce...ono záleží co člověk preferuje:-)

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