Pocitanie veku
Pocitanie veku
Caute, potrebujem script, ktory mi vypocita vek uzivatela. Teda on si zada rok, mesiac a den narodenia. To sa ulozi v db do stlpca datetime. A teraz potrebujem pomoc! Ako spravim aby mi to vypocitalo jeho vek a vypisalo? Vopred dakujem... 
Neni to uplne presne,ale takto:
môže ti to vyhodiť občas (-) ale inak som skusal a ide...ak ti to vyhodi (-) napis pri akom veku a ja sa nato pozrem ale zajtra lebo ma boli hlava..a napis ci funguje
Kód: Vybrať všetko
<form action="index.php" method="post">
<div>Tvoj rok narodenia:<input type="text" name="year" value=""/></div>
<div>Tvoj mesiac narodenia:<input type="text" name="month" value=""/></div>
<div>Tvoj den narodenia:<input type="text" name="day" value=""/></div>
<div><input type="reset" value="Vymaž"/></td><td>
<input type="submit" value="Odošli" name="send"/></td><td></div>
</form>
<?
if (!empty($_POST['send'])):
$rok = Date("Y");
$mesiac = Date("n");
$den = Date("j");
$year = $_POST['year'];
$month = $_POST['month'];
$day = $_POST['day'];
if ($month>$mesiac):
$mm =$month-$mesiac;
else:
$mm =$mesiac-$month;
endif;
if ($den<day):
$dd =$den-$day;
else:
$dd =$day-$den;
endif;
$yy = $rok-$year;
if (empty($_POST['month'])):
$mm=0;
endif;
if (empty($_POST['day'])):
$dd=0;
endif;
if (!empty($_POST['month'])):
$yy = $rok-$year-1;
endif;
echo"Mas $yy rokov $mm mesiacov a $dd dni";
endif;
?>
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
tu mas to mastermindove,to moje nepouzivaj sice ti to vypise aj mesiace ma to dost chyb(minuska a tak),toto je asi lepšie,tu to je aj z formularomlama2d napísal:mastermind - skusam a stale to vypisuje vek 37... Inac dik
warezman - je to dlhe ale hlavne ze mi to ide, dik
Kód: Vybrať všetko
<form action="index.php" method="post">
<div>Tvoj rok narodenia:<input type="text" name="year" value=""/></div>
<div>Tvoj mesiac narodenia:<input type="text" name="month" value=""/></div>
<div>Tvoj den narodenia:<input type="text" name="day" value=""/></div>
<div><input type="reset" value="Vymaž"/></td><td>
<input type="submit" value="Odošli" name="send"/></td><td></div>
</form>
<?
if (!empty($_POST['send'])):
$year = $_POST['year'];
$month = $_POST['month'];
$day = $_POST['day'];
$today=time();
$birthDate=strtotime("$day.$month.$year");
echo "Tvoj vek je ";
echo floor(($today-$birthDate)/(365*24*60*60));
endif;
?>-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
Chyba je u teba...vid. http://test.warezman.info/lama2d napísal:Ano ale je tam niekde chyba, mne to ukazuje ze mam 37 rokov. Vlastne ak pouzijes hocijaky datum ukaze ti to vek 37 rokov.
Problém je v tom, že rok nemá 365 dní (teda priestupný nemá)test napísal:warezman - Ide ti to zle, dal som 10.10.1986 a hodilo mi to vek 21, pricom tam ma byt 20
Kód: Vybrať všetko
$year = $_POST['year']
$month = $_POST['month']
$day = $_POST['day']
$d = date("d");
$m = date("m");
$y = date("Y");
$age = $y-$year;
if (($m < $month) || ($m == $month && $d < $day)) $age--;
http://skuska01.tym.sk/
Este mi povedzte ze vam to ten vek ukazuje spravne a asi si skocim k ocnemu. Fakt uz neviem cim to je.... IC co? Ja som to vedel, taky debilny freehosting. Nakopat do riti.
Este mi povedzte ze vam to ten vek ukazuje spravne a asi si skocim k ocnemu. Fakt uz neviem cim to je.... IC co? Ja som to vedel, taky debilny freehosting. Nakopat do riti.
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
no takze vyriesene. povodny fungoval presne tak ako mal, akurat mala starsia verzia php problem s funkciou strtotime, ktora pri danom vstupe vyhadzovala chybu [-1]. Tym padom skript vyhodil 37 co je pocet rokov od timestamp 0.
dalo sa to riesit rozparsovanim datumu.alebo este lepsie a efektivnejsie zmenenim typu v db z DATETIME na TIMESTAMP.
dalo sa to riesit rozparsovanim datumu.
Kód: Vybrať všetko
<?
$today=time();
$birthDate=mktime(0,0,0,21,7, 2000);
echo floor(($today-$birthDate)/(31471200));
?>Dakujem all, karmu + davam uzvatelom: chrono, warezman a mastermind.
Mam tu vsak este jeden problem. Spravil som si na to select, ktory vypise 13 rokov pred 15 rokmi od auktualneho roku. To funguje v pohode. Odoslat sa to da, ale ked to chcem pomocou php scriptu neskor upravit, chcem aby mi ukazalo v selecte datum, ktory som predtym do DB ulozil. Z Timestamp si to viem rozlozit na den, mesiac a rok. Teda mam napriklad premennu $day ktora je 26, $month je 11 a $year je 1987. A teraz potrebujem aby mi ten datum 26.11.1987 ukazalo v selecte. Treba tam pridat podmienku ktoru ja neviem spravit, ze ak uz datum v DB zapisany je, tak ho nacita do selectu. Ale ak nie je, tak bude platit ten script nizsie. Viete aspon o co ide?
Dakujem ...
tu je cast toho scriptu:
Mam tu vsak este jeden problem. Spravil som si na to select, ktory vypise 13 rokov pred 15 rokmi od auktualneho roku. To funguje v pohode. Odoslat sa to da, ale ked to chcem pomocou php scriptu neskor upravit, chcem aby mi ukazalo v selecte datum, ktory som predtym do DB ulozil. Z Timestamp si to viem rozlozit na den, mesiac a rok. Teda mam napriklad premennu $day ktora je 26, $month je 11 a $year je 1987. A teraz potrebujem aby mi ten datum 26.11.1987 ukazalo v selecte. Treba tam pridat podmienku ktoru ja neviem spravit, ze ak uz datum v DB zapisany je, tak ho nacita do selectu. Ale ak nie je, tak bude platit ten script nizsie. Viete aspon o co ide?
tu je cast toho scriptu:
Kód: Vybrať všetko
echo "<select name=\"year\">";
$ycounter = date("Y")-28;
$y = date("Y")-15;
while ($ycounter<$y)
{
$ycounter++;
echo "<option value=$ycounter>$ycounter</option>";
}
echo "</select>";Pri tej položke, čo má byť zvolená, pridaj do tagu option: selected="selected"
Teda niečo ako:
Teda niečo ako:
Kód: Vybrať všetko
echo "<select name=\"year\">";
$ycounter = date("Y")-28;
$y = date("Y")-15;
while ($ycounter<$y)
{
$ycounter++;
echo "<option value=$ycounter";
if ($year == $ycounter) echo " selected=\"selected\"";
echo ">$ycounter</option>";
}
echo "</select>";
Ja nemam 17 rokovmastermind napísal:no takze vyriesene. povodny fungoval presne tak ako mal, akurat mala starsia verzia php problem s funkciou strtotime, ktora pri danom vstupe vyhadzovala chybu [-1]. Tym padom skript vyhodil 37 co je pocet rokov od timestamp 0.
dalo sa to riesit rozparsovanim datumu.alebo este lepsie a efektivnejsie zmenenim typu v db z DATETIME na TIMESTAMP.Kód: Vybrať všetko
<? $today=time(); $birthDate=mktime(0,0,0,21,7, 2000); echo floor(($today-$birthDate)/(31471200)); ?>
Este tam mas zameneny den s mesiacom.
mktime();
hodiny,minuty,sekundy,mesiac,den,rok
Spravne je to:
Kód: Vybrať všetko
<?php
$today = time();
$birthDate = mktime(0,0,0,7,21,2000);
echo floor(($today-$birthDate)/(365*24*60*60));
?>