Autor | Zpráva | ||
---|---|---|---|
matlala Profil |
ahoj,
prosím mám takový malinkatý problém, potřeboval bych zjistit věk na základě data narození ale nejak mě nenapadá jak teda blbnou mi dny muj script je : if($_POST["vek"]=="" and $narozen!=""){ $rok=$_POST["roknarozrni"]; $mesic=$_POST["dennarozeni"]; $den=$_POST["dennarozeni"]; $aktuaden=date("d"); $den1 = substr($aktuaden, 0, 1); $den2 = substr($aktuaden, 1, 1); if($den1==0){$aktualniden=$den2;}else{$aktualniden=$den1.$den2;} $aktumesic=date("m"); $mesic1 = substr($aktumesic, 0, 1); $mesic2 = substr($aktumesic, 1, 1); if($mesic1==0){$aktualnimesic=$mesic2;}else{$aktualnimesic=$mesic1.$me sic2;} $aktualnirok=date("Y"); $c=$aktualnirok-$rok; if($mesic>$aktualnimesic){ $c=$c-1; } $vek=$c; } nějak mi ale nejdou doplnit ty dny. Jde to i jinak aby se zjistil věk? díky petr |
||
ShiraNai7 Profil |
#2 · Zasláno: 13. 5. 2008, 15:08:44
Ukladat vek v timestamp a pak staci jen dane cislo odecist od aktualni timestamp a ziskas vek (v sekundach).
Funkce: http://cz.php.net/manual/en/function.mktime.php //pro vytvoreni timestamp daneho data http://cz.php.net/manual/en/function.time.php //pro ziskani aktualni timestamp |
||
Jan Tvrdík Profil |
#3 · Zasláno: 13. 5. 2008, 15:10:16
function zjistiVek($den,$mesic,$rok) { $vek = time() - mktime(0, 0, 0, $mesic, $den, $rok); $vek = $vek / (60 * 60 * 24 * 365); $vek = floor($vek); return $vek; } |
||
roberta Profil |
#4 · Zasláno: 13. 5. 2008, 15:16:52 · Upravil/a: roberta
<? $narodeniny = 19730508; $dnes = 20080513; $vek = (int)(($dnes- $narodeniny)/10000); echo $vek; ?> |
||
matlala Profil |
#5 · Zasláno: 13. 5. 2008, 18:42:45 · Upravil/a: matlala
jo ale jak dostat z 3 polí pro datum :
$rok=$_POST["roknarozrni"]; $mesic=$_POST["dennarozeni"]; $den=$_POST["dennarozeni"]; jedno datum v timestamp a uložím ho do databáze odčítání a převod mi jsou jasný |
||
matlala Profil |
#6 · Zasláno: 13. 5. 2008, 18:55:46
Jan Tvrdík: ta funkce mi nevyhodí nic
roberta: na mé datum narození mi dává 14 i když už mi je 15 a 1/2 |
||
suky Profil |
#7 · Zasláno: 13. 5. 2008, 19:05:32
matlala
Jan Tvrdík: ta funkce mi nevyhodí nic to je blbost, ukaz zapis testu... roberta: na mé datum narození mi dává 14 i když už mi je 15 a 1/2 Misto 10000 pouzij zapis 60 * 60 * 24 * 365 |
||
matlala Profil |
#8 · Zasláno: 13. 5. 2008, 19:09:15
no ta funkce od Tvrdíka mi vyhodí 14 konečně už ale když zadám moje datum manuálně do funkce tak vyhodí 15 což je správně
|
||
matlala Profil |
#9 · Zasláno: 13. 5. 2008, 19:11:39
to od roberty zas vyhodí: 4096752881040
$rok=$_POST["roknarozerni"]; $mesic=$_POST["dennarozeni"]; $den=$_POST["dennarozeni"]; $narodeniny =mktime(0, 0, 0, $mesic, $den, $rok); $dnes = time(); $vek = (int)(($dnes- $narodeniny)/60 * 60 * 24 * 365); datum je 19.11.1992 |
||
suky Profil |
#10 · Zasláno: 13. 5. 2008, 19:15:00
matlala
$vek = (int)(($dnes- $narodeniny)/60 * 60 * 24 * 365); $vek = (int)(($dnes - $narodeniny)/(60 * 60 * 24 * 365)); |
||
matlala Profil |
#11 · Zasláno: 13. 5. 2008, 19:15:44
ja jsem *****
|
||
matlala Profil |
#12 · Zasláno: 13. 5. 2008, 19:16:18
zas to háže 14
$rok=$_POST["roknarozerni"]; $mesic=$_POST["dennarozeni"]; $den=$_POST["dennarozeni"]; $narodeniny =mktime(0, 0, 0, $mesic, $den, $rok); $dnes = time(); $vek = (int)(($dnes- $narodeniny)/(60 * 60 * 24 * 365)); |
||
suky Profil |
#13 · Zasláno: 13. 5. 2008, 19:20:57
matlala
Me to funguje... <? function zjistiVek($den,$mesic,$rok) { $vek = time() - mktime(0, 0, 0, $mesic, $den, $rok); $vek = $vek / (60 * 60 * 24 * 365); $vek = floor($vek); return $vek; } echo zjistiVek(19,11,1992); ?> |
||
matlala Profil |
#14 · Zasláno: 13. 5. 2008, 19:24:43 · Upravil/a: matlala
jo to jsem zkoušel, ale blbne to po dosazení z formuláře:
...<tr><td align=\"right\" valign=\"middle\" nowrap><b>Datum narození:</b></td> <td align=\"left\" valign=\"middle\"><input type=\"text\" value=\"".$_POST["dennarozeni"]."\" name=\"dennarozeni\" style=\"width:20px\" /> .<input type=\"text\" value=\"".$_POST["mesicnarozeni"]."\" name=\"mesicnarozeni\" style=\"width:20px\" /> .<input type=\"text\" value=\"".$_POST["roknarozerni"]."\" name=\"roknarozerni\" style=\"width:35px\" /> (D.M.RRRR)</td></tr>... ... a pak: if($_POST["vek"]=="" and $narozen!=""){ $rok=$_POST["roknarozerni"]; $mesic=$_POST["dennarozeni"]; $den=$_POST["dennarozeni"]; $narodeniny =mktime(0, 0, 0, $mesic, $den, $rok); $dnes = time(); $vek = (int)(($dnes- $narodeniny)/(60 * 60 * 24 * 365)); } nebo function zjistiVek($den,$mesic,$rok) { $vek = time() - mktime(0, 0, 0, $mesic, $den, $rok); $vek = $vek / (60 * 60 * 24 * 365); $vek = floor($vek); return $vek; } $rok=$_POST["roknarozerni"]; $mesic=$_POST["dennarozeni"]; $den=$_POST["dennarozeni"]; echo function zjistiVek($den,$mesic,$rok); když dám datum přímo do funkce a nedosazuju z promněných tak to jde dobře |
||
matlala Profil |
#15 · Zasláno: 13. 5. 2008, 19:52:04
už to funguje byla chybka v proměných měl jsem stejnou promněnou
|
||
Str4wberry Profil |
#16 · Zasláno: 13. 5. 2008, 20:15:49
Reakce na matlala:
Nebylo by lepší zadat titulek do Googlu? Našel bys tak tento článek, respektive tento hotový kód: <?php echo floor((date("Ymd") - date("Ymd", $narozeni)) / 10000); ?> |
||
Časová prodleva: 8 let
|
|||
smiesek Profil |
snažím se najít nějaké (správně počítající) hotové řešení pro výpočet věku a například při zadání data 7.10.1980 se mi zobrazuje věk 36 let, přesněji pokud nezaokrouhluju tak 36.007427321157 let, coz je blbost, protože teprve 36 let bude ne? Tak bych očekávala nějaký tvar bez zaokrouhlení jako 35.xx let, ne? :-)
edit: jo tak už to asi nyní bude počítat jak má, dohledala jsem tvar roku jako 31556926 na místo => 31536000 |
||
Časová prodleva: 8 let
|
0