Avatar billede rampagezz Nybegynder
03. februar 2008 - 12:16 Der er 13 kommentarer og
1 løsning

Udregn alder

Dette spørgsmål har været stillet et par gange og har da også prøvet at bruge det til problem, men kunne ikke bruge det.

Jeg har en dato i min DB, som ser sådan ud: 1981-06-11.
Denne fødselsdato skal så modregnes dags dato, så den hele tiden viser hvor mange år personen er.

Kan i hjælpe med det?

- rampagezz

p.s. skal ud af døren nu, men er hjemme i aften.
Avatar billede showsource Seniormester
03. februar 2008 - 14:34 #1
Taget fra manualen ( mysql )

SELECT
(YEAR(CURDATE())-YEAR(`datofelt`))-(RIGHT(CURDATE(), 5)< RIGHT(`datofelt`, 5)) as `alder`
FROM `dintabel`
Avatar billede rampagezz Nybegynder
03. februar 2008 - 15:50 #2
Den vil ikke skrive alderen ud.. Nu har jeg prøvet med dette:

<?php
$sql = "SELECT (YEAR(CURDATE())-YEAR(`fdato`))-(RIGHT(CURDATE(), 5)< RIGHT(`fdato`, 5)) as `alder` FROM `members`";
$query = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($query);
$alder = $row['alder'];
?>

<?php echo $row_Recordset1['alder']; ?>
Avatar billede rampagezz Nybegynder
03. februar 2008 - 15:52 #3
Hov så lige at jeg har skrevet Recordset1.. Det er ændret til <?php echo $row['alder']; ?>
Avatar billede rampagezz Nybegynder
03. februar 2008 - 16:24 #4
Kan man skrive alder ud, hvis man modregner "fdato" med PHP ?

Noget ala:
<?php
$fdato = $row['fdato'];
$nudato = date('Y-m-d');

$alder = $fdato - $nudato;
print $alder;
?>

Det skal lige nævnes at jeg ikke er hajen til PHP..
Avatar billede rampagezz Nybegynder
03. februar 2008 - 18:03 #5
Ikke nogen som kan hjælpe?
Avatar billede zynzz Praktikant
03. februar 2008 - 18:31 #6
Prøv: dog utestet...


<?
// Funktionen fdag
function fdag($fdag) {
if ($fdag !== "0000-00-00") {

// Henter nye informationer
$nu_dag = date('d');
$nu_maaned = date('m');
$nu_aar = date('Y');

// Udregner alder
$del = split('-', $fdag);
if (intval($del[2])==0) return '';
$dagen = $del[2];
$maaneden = $del[1];
$aaret = $del[0];
unset($del);
$alder = $nu_aar - $aaret - 1;
if ($maaneden < $nu_maaned || ($maaneden == $nu_maaned && $dagen <= $nu_dag)) {
$alder++;
return $alder;
} else {
return $alder;
}
} else {
$maaneden = 0; $dagen = 0; $aaret = 0;
}
}

// Udskriv din alder her
echo fdag(1981-06-11);
?>
Avatar billede zynzz Praktikant
03. februar 2008 - 18:32 #7
Ups: echo fdag("1981-06-11");
Avatar billede rampagezz Nybegynder
03. februar 2008 - 19:22 #8
Øhh.. Det virker godt, men hvis jeg nu ændrer dato´en i db'en til "1981-02-02" skriver den stadig 26 ?
Den skal kunne trække dato'en i feltet "fdato" i tabellen (members) fra dags dato.
Og ikke kun "1981-06-11"..
Avatar billede zynzz Praktikant
03. februar 2008 - 19:39 #9
Jeg ved ikke lige hvad du mener, men her er et bud på hvordan du skal:

<?
// Funktionen fdag
function fdag($fdag) {
if ($fdag !== "0000-00-00") {

// Henter nye informationer
$nu_dag = date('d');
$nu_maaned = date('m');
$nu_aar = date('Y');

// Udregner alder
$del = split('-', $fdag);
if (intval($del[2])==0) return '';
$dagen = $del[2];
$maaneden = $del[1];
$aaret = $del[0];
unset($del);
$alder = $nu_aar - $aaret - 1;
if ($maaneden < $nu_maaned || ($maaneden == $nu_maaned && $dagen <= $nu_dag)) {
$alder++;
return $alder;
} else {
return $alder;
}
} else {
$maaneden = 0; $dagen = 0; $aaret = 0;
}
}

$sql = "HER";
$query = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($query);
$alder = $row['alder'];

echo fdag($row['alder']);
?>
Avatar billede rampagezz Nybegynder
03. februar 2008 - 19:55 #10
Yes.. Nu virker det.. Tusind tak for hjælpen og kom med et svar. :-)
Avatar billede zynzz Praktikant
03. februar 2008 - 19:58 #11
Jamen det var da dejlig.. :D
Avatar billede rampagezz Nybegynder
03. februar 2008 - 20:24 #12
Måske du kunne hjælpe mig med mit næste problem..
http://www.eksperten.dk/spm/817859

:-)
Avatar billede showsource Seniormester
04. februar 2008 - 06:40 #13
Måske fordi dit felt i db ikke er et date felt?
Avatar billede showsource Seniormester
04. februar 2008 - 06:47 #14
<?php
$sql = "SELECT (YEAR(CURDATE())-YEAR(`fdato`))-(RIGHT(CURDATE(), 5)< RIGHT(`fdato`, 5)) as `alder` FROM `members`";
$query = mysql_query($sql) or die(mysql_error());

    if(mysql_num_rows($query) > 0) {
        while($row = mysql_fetch_assoc($query)) {
        echo $row['alder'] .'<br>';
        }
    }else{
    echo'No rows';
    }
?>
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