Avatar billede horizon Nybegynder
14. februar 2005 - 20:50 Der er 12 kommentarer og
2 løsninger

Udregning af alder

Jeg står og mangler et "alder" script til min side hvor man indtaster sin fødselsdag  i DD/MM/ÅÅÅÅ format, det smides så ind i en "date" række i min MySql tabel.

Men! hvordan regner jeg ud hvad brugerens alder er?

Har leget med flere forskellige ting, men kan ikke finde ud af noget konkret som virker.
Håber der er nogle som kan hjælpe lidt ;)
Avatar billede tigertool Nybegynder
14. februar 2005 - 20:53 #1
Kig lige lidt her: http://mario64.spymac.net/birthday_calc/

Det er en function der kan udregne alderen udfra en fødselsdato.
Avatar billede Slettet bruger
14. februar 2005 - 22:45 #2
<?
if(!isset($_POST['ok']))
    {
    echo "
    <form action=\"\" method=\"post\">
    <input type=\"text\" name=\"aar\" value=\"aar\">
    <input type=\"text\" name=\"maaned\" value=\"maaned\">
    <input type=\"text\" name=\"dag\" value=\"dag\">
    <input type=\"submit\" name=\"ok\" value=\"ok\">
    ";
    }
else
    {
    $aar = date("Y") - $_POST['aar'];
    $maaned = date("m") - $_POST['maaned'];
    $dag = date("j") - $_POST['dag'];
    if($maaned < '0' || $dag < '0')
        {
        $alder = $aar-1;
        }
    else
        {
        $alder = $aar;
        }
    }
?>
Avatar billede Slettet bruger
14. februar 2005 - 22:54 #3
har lige testet det.. det virker som det skal
Avatar billede Slettet bruger
14. februar 2005 - 22:56 #4
<?
if(!isset($_POST['ok']))
    {
    echo "
    <form action=\"\" method=\"post\">
    <input type=\"text\" name=\"aar\" value=\"ÅÅÅÅ\"><br>
    <input type=\"text\" name=\"maaned\" value=\"MM\"><br>
    <input type=\"text\" name=\"dag\" value=\"DD\"><br>
    <input type=\"submit\" name=\"ok\" value=\"ok\">
    ";
    }
else
    {
    $aar = date("Y") - $_POST['aar'];
    $maaned = date("m") - $_POST['maaned'];
    $dag = date("j") - $_POST['dag'];
    if($maaned < '0' || $dag < '0')
        {
        $alder = $aar-1;
        }
    else
        {
        $alder = $aar;
        }
    echo $alder;
    echo "<br><br><a href=\"". $_SERVER['PHP_SELF'] ."\">Tilbage</a>";
    }
?>

evt..
Avatar billede davidskp Nybegynder
15. februar 2005 - 09:20 #5
wicez det script virker ikke...
Lad os sige at jeg har fødselsdag d. 27/1/1983

$aar = 2005 - 1983 = 22
    $maaned = 2 - 1 = 1
    $dag = 15 - 27 = -12
    if($maaned < '0' || $dag < '0')
    {
    $alder = $aar-1;
    }

Da $dag er < 0 siger den at jeg er 21 år...men jeg er jo faktisk 22 ja jeg havde fødselsedag sidste måned...scripet virker altså ikke hvis en fødselsdato er højere end dags dato...
Avatar billede davidskp Nybegynder
15. februar 2005 - 10:14 #6
jeg har lige bikset en måde at beregne det sammen. Jeg aner ikke om det er den smarteste måde...men det virker (tror jeg nok) :)

<?
if($_GET[a] == calc) {

$idag = date("Y") . date("m") . date("d");
$birth = $_POST[aar] . $_POST[maaned] . $_POST[dag];
$alder = substr($idag - $birth,0,2);
echo $alder;
}
else {
?>
<form action="<? echo $_SERVER['PHP_SELF']; ?>?a=calc" method="post">
<input type="text" name="aar" value="ÅÅÅÅ">
<input type="text" name="maaned" value="MM">
<input type="text" name="dag" value="DD">
<input type="submit" name="submit" value="Beregn alder">
<?
}
?>

Det den gør er at den trækker dags dato fra din fødselsdato i formatet ÅÅÅÅMMDD feks
20050215 - 19830127 = 220088

Så tar jeg 220088 og viser kun de første 2 cifrer da det jo er årene

Det skal lige siges at det ikke virker hvis du er over 100 år ;)

/dave
Avatar billede davidskp Nybegynder
15. februar 2005 - 10:22 #7
hmm...det virker heller ikke hvis du er under 10...der må være en bedre måde at gøre det
Avatar billede davidskp Nybegynder
15. februar 2005 - 10:54 #8
så fandt jeg med lidt hjælp ud af det...man ska bare skrive

$alder = substr($idag - $birth,0,-4);

så virker det osse hvis du er under 10 og over 100 :)
Avatar billede Slettet bruger
17. februar 2005 - 01:28 #9
$alder = date("Y") - $_POST['aar'];
$birth = $_POST['maaned'] . $_POST['dag'];
$idag = date("m") . date("d");
if($birth>$idag){
  $alder-=1;
}
Avatar billede horizon Nybegynder
17. februar 2005 - 14:54 #10
Tak for scriptet davidskp & med hjælp fra sandbox

jeg har nu testet det i et stand alone script og det virker fint :D

Men nu går jeg tilbage til det med min database, som sagt ligger dataerne for alderen i et "date" felt så hvis vi nu siger jeg blev født d. 19. i 7. år 87. Så står den som 1987-07-19. hvordan skal jeg hive den dato ud af databasen og bryde den op i 3 variabler, hhv. $AAAA (år) $MM & $DD ?

og kan man skrive "idag har denne bruger fødselsdag" eller noget andet ind idet? eller rettere, hvordan? noget med

if($_POST['MM'] == date("m") && $_POST['DD'] == date("d")) {

  blah blah blah

}else {

  noget andet blah

}

?
Avatar billede Slettet bruger
17. februar 2005 - 18:17 #11
$dato="1987-07-19";

list($AAAA, $MM, $DD)=explode('-', $dato);

$alder = date("Y") - $AAAA;
$birth = $MM . $DD;
$idag = date("m") . date("d");
if($birth>$idag){
  $alder-=1;
}

if($birth==$idag){
  echo "Tillykke";
}
Avatar billede horizon Nybegynder
27. februar 2005 - 23:06 #12
smid et svar sandbox ;) så får du og david pointsene
Avatar billede Slettet bruger
28. februar 2005 - 00:17 #13
Javel :-)
Avatar billede alex15 Nybegynder
13. juni 2008 - 12:23 #14
Ved er det er lang tid siden at denne tråd har været oppe og runde, men eftersom jeg selv lige fik læst den igennem og brugt den. ville jeg til tilføje noget til den:

------ Udregn alder ved næste fødselsdag ------

$query = mysql_query("SELECT * FROM `table` ORDER BY DAYOFYEAR(dob)-DAYOFYEAR(NOW())+366)%365 LIMIT 4");

// $row['dob'] = mit date felt i databasen.


$dato = "".substr($row['dob'], 0,-6).'-'.substr($row['dob'], 5,-3).'-'.substr($row['dob'], 8,11)."";

list($AAAA, $MM, $DD)=explode('-', $dato);

$alder = date("Y") - $AAAA;         
$birth = $MM . $DD;
$idag = date("m") . date("d");

if(substr($row['dob'], 5,-3) < date("m")){ $alder++; } else { $alder; }

---

Ville bare lige smide den her ind, hvis en anden person skulle støde på denne tråd.

Den udregner hvor gammel er person er ved næste fødselsdag.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester