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
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
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
<?
$narodeniny = 19730508;
$dnes = 20080513;
$vek = (int)(($dnes- $narodeniny)/10000);
echo $vek;
?>
matlala
Profil
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
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
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
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
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
matlala
$vek = (int)(($dnes- $narodeniny)/60 * 60 * 24 * 365);
$vek = (int)(($dnes - $narodeniny)/(60 * 60 * 24 * 365));
matlala
Profil
ja jsem *****
matlala
Profil
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
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
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
už to funguje byla chybka v proměných měl jsem stejnou promněnou
Str4wberry
Profil
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);
?>
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

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: