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.
Annonceindlæg fra Barco
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`
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']; ?>
03. februar 2008 - 15:52
#3
Hov så lige at jeg har skrevet Recordset1.. Det er ændret til <?php echo $row['alder']; ?>
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..
03. februar 2008 - 18:03
#5
Ikke nogen som kan hjælpe?
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); ?>
03. februar 2008 - 18:32
#7
Ups: echo fdag("1981-06-11");
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"..
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']); ?>
03. februar 2008 - 19:55
#10
Yes.. Nu virker det.. Tusind tak for hjælpen og kom med et svar. :-)
03. februar 2008 - 19:58
#11
Jamen det var da dejlig.. :D
04. februar 2008 - 06:40
#13
Måske fordi dit felt i db ikke er et date felt?
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'; } ?>
Vi tilbyder markedets bedste kurser inden for webudvikling