Autor | Zpráva | ||
---|---|---|---|
Jack06 Profil |
#1 · Zasláno: 13. 9. 2009, 18:54:16
Dobrý den. Mám v databázi uložen datum narození ve formátu: 1990-02-17
a potřeboval bych z toho zjistit věk.. Prosím o radu.. toto mi totiž nefunguje. Děkuji floor((date("Ymd") - date("Ymd", $data['born'])) / 10000); |
||
Nox Profil |
#2 · Zasláno: 13. 9. 2009, 19:06:06
Ano, tohle není moc dobrý postup
Nejlepší podle mě bude použít nativní databázové funkce, tudíž třeba select date_sub(curdate(), born) from table where ... kde "born" bude název sloupce s datem narození Tyto fukce by navíc měly být sofistikované a brát ohled na věci jako přestupný rok atd. |
||
Jack06 Profil |
#3 · Zasláno: 13. 9. 2009, 19:13:30 · Upravil/a: Jack06
v tabulce mám born type date, a nějako mi to nejde.. mám výběr:
$result = $db->query("SELECT id, nick, rights, sex, date_sub(curdate(), born) FROM `users` WHERE (nick='$user_name' AND (pass='$user_pass' OR pass='".md5($user_pass)."')) LIMIT 1"); if ($result->num_rows == 1) { } a hází mí to num_rows 0 a když odstraním to s tím born tak to jde :-( |
||
Anonym Profil * |
#4 · Zasláno: 13. 9. 2009, 19:34:48
Pokud to ale podle toho nechces řadit, jednodušší by bylo použít php funkci strtotime
|
||
Jack06 Profil |
#5 · Zasláno: 13. 9. 2009, 20:01:18
Anonym
problém je ale že to strtotime je od roku 1970... dál to nebere a končí to rokem ted nevím přesně, ale omezuje to |
||
123 Profil * |
#6 · Zasláno: 13. 9. 2009, 20:25:41
|
||
Jack06 Profil |
#7 · Zasláno: 13. 9. 2009, 20:32:28
Já to nechápu mě to vypíše 2009
|
||
Jack06 Profil |
#8 · Zasláno: 14. 9. 2009, 19:32:44 · Upravil/a: Jack06
tabulka:
CREATE TABLE users ( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, nick VARCHAR(15) NOT NULL, pass VARCHAR(32) NOT NULL, rights TINYINT(2) UNSIGNED NOT NULL, sex ENUM('m','z') NOT NULL DEFAULT 'm', born DATE NOT NULL, PRIMARY KEY(id) ); Výběr z db: $result = $db->query("SELECT id, nick, rights, sex, (YEAR(CURDATE())-YEAR(born)) - (RIGHT(CURDATE(),5)<RIGHT(born,5)) AS age FROM `users` WHERE (nick='$user_name' AND (pass='$user_pass' OR pass='".md5($user_pass)."')) LIMIT 1"); if ($result->num_rows == 1) { $data = $result->fetch_assoc(); print $data['age']; } Výsledek mi vypíše 2009 :-( |
||
Časová prodleva: 15 let
|
0