shagg0r Skrevet 5. november 2004 Del Skrevet 5. november 2004 Har en form hvor brukere skriver inn fødselsdatoen sin. Fødselsdatoen er delt inn i 3 kombobokser (dag, måned og år). hvor dag og måned er på formatet xx og år på formatet xxxx. Hvordan kan jeg finne ut alderen til brukeren ved å bruke php? Lenke til kommentar
Smidt Skrevet 5. november 2004 Del Skrevet 5. november 2004 du må gjøre fødselsdatoen til brukeren om til et tall vhja en funksjon i php (husker ikke funksjonen i farten) deretter henter du ut tiden nå vhja. date() deretter bruker du samme funksjon som i sted til å gjøre nåtiden om til et tall. du trekker disse tallene frahverandre og gjør det tilbake om igjen til et tall som kan skrives ut på den formen du vil Lenke til kommentar
shagg0r Skrevet 5. november 2004 Forfatter Del Skrevet 5. november 2004 vel det gav meg svært lite Lenke til kommentar
gozzer Skrevet 5. november 2004 Del Skrevet 5. november 2004 Det er mange måter å gjøre dette på. I utgangspunktet ville jeg vel anbefalt å regne det ut ved hjelp av konvertering til/fra et unix timestamp, men så kom jeg over denne kodesnutten: function age($y,$m,$d) { list($now_d,$now_m,$now_y) = explode('.',date('d.m.Y')); if(($m > $now_m) || ($m == $now_m && $now_d < $d)) $age = $now_y - $y - 1; else $age = $now_y - $y; return $age; } Kilde: http://dennis.moellegaard.dk/php/age.php?source=1 Mulig den er til hjelp. Lykke til Lenke til kommentar
Gilbert Skrevet 6. november 2004 Del Skrevet 6. november 2004 (endret) om ikke gozzer sin fungerer, er dette en jeg bruker (den har sitt opphav her fra hw-forumet:D): <?php function getAgeByDate($iDay, $iMonth, $iYear) { $iTimeStamp = (mktime() - 86400) - mktime(0, 0, 0, $iMonth, $iDay, $iYear); $iDays = $iTimeStamp / 86400; $iYears = floor($iDays / 365.25); return $iYears; } ?> Endret 6. november 2004 av fjartan Lenke til kommentar
shagg0r Skrevet 6. november 2004 Forfatter Del Skrevet 6. november 2004 thanx =) nå skal jeg teste de ut å se hvordan det funkerB> Lenke til kommentar
muffe Skrevet 6. november 2004 Del Skrevet 6. november 2004 om ikke gozzer sin fungerer, er dette en jeg bruker (den har sitt opphav her fra hw-forumet:D): <?php function getAgeByDate($iDay, $iMonth, $iYear) { $iTimeStamp = (mktime() - 86400) - mktime(0, 0, 0, $iMonth, $iDay, $iYear); $iDays = $iTimeStamp / 86400; $iYears = floor($iDays / 365.25); return $iYears; } ?> Hadde det ikke vært en idé å rundet av svaret? Du kan jo risikere å få 23,2754654 år ut av det scriptet ditt... Hadde det ikke da vært best å runde det av til 23 år, sånn at du får ut et heltall? Lenke til kommentar
jorgis Skrevet 6. november 2004 Del Skrevet 6. november 2004 Ser du ikke at han kjører floor() før han putter ut svaret? floor -- Round fractions down Lenke til kommentar
muffe Skrevet 6. november 2004 Del Skrevet 6. november 2004 Når du sier det så ser jeg jo det.... Var nok litt for kjapp. Lenke til kommentar
Simon Zimmermann Skrevet 6. november 2004 Del Skrevet 6. november 2004 round() er vel å foretrekke, siden det gir et mer presist svar. Returns the rounded value of val to specified precision Lenke til kommentar
jorgis Skrevet 6. november 2004 Del Skrevet 6. november 2004 round() er vel å foretrekke, siden det gir et mer presist svar. Returns the rounded value of val to specified precision Nei. round() runder av både opp og ned. En person som da er 16.54 år er altså ikke 17, så da er det best å runde nedover. Man er ikke ett år eldre før man har bursdag. Lenke til kommentar
???????? Skrevet 6. november 2004 Del Skrevet 6. november 2004 (endret) om ikke gozzer sin fungerer, er dette en jeg bruker (den har sitt opphav her fra hw-forumet:D): <?php function getAgeByDate($iDay, $iMonth, $iYear) { $iTimeStamp = (mktime() - 86400) - mktime(0, 0, 0, $iMonth, $iDay, $iYear); $iDays = $iTimeStamp / 86400; $iYears = floor($iDays / 365.25); return $iYears; } ?> Hehe... dette er vel en meget begrenset løsning. Den vil vel ikke fungere på datoer før 01.01.1970! Edit: Det er heller ikke en bra båte å ta hensyn til skuddår på. Antar at det er derfor det deles på 365.25? Endret 6. november 2004 av ???????? Lenke til kommentar
dabear Skrevet 6. november 2004 Del Skrevet 6. november 2004 (endret) (den har sitt opphav her fra hw-forumet:D): Vel akkurat den tviler jeg litt på. http://www.zend.com/codex.php?id=309&single=1 Edit: har lagd en kode som burde virke uansett årstall. Si fra om jeg har gjort noe feil en plass da.. <?php function AgebyDayMonthYear($day, $month, $year) { //By dabear $currentYear = date('Y'); $currentMonth = date('m'); $currentDayofMonth = date('d'); if($currentMonth > $month) { return ($currentYear - $year); } elseif($currentMonth < $month) { return($currentYear - $year -1); } else // ev. elseif($currentMonth == $month) { return($currentDayofMonth >= $day) ? ($currentYear - $year) : ($currentYear - $year -1); } } echo '<div>hvor gammel er du?: ' . AgebyDayMonthYear(4, 11, 2003) . '</div>'; ?> Hm, en del mellomrom forsvant visst Endret 6. november 2004 av dabear Lenke til kommentar
Gilbert Skrevet 7. november 2004 Del Skrevet 7. november 2004 om ikke gozzer sin fungerer, er dette en jeg bruker (den har sitt opphav her fra hw-forumet:D): <?php function getAgeByDate($iDay, $iMonth, $iYear) { $iTimeStamp = (mktime() - 86400) - mktime(0, 0, 0, $iMonth, $iDay, $iYear); $iDays = $iTimeStamp / 86400; $iYears = floor($iDays / 365.25); return $iYears; } ?> Hehe... dette er vel en meget begrenset løsning. Den vil vel ikke fungere på datoer før 01.01.1970! Edit: Det er heller ikke en bra båte å ta hensyn til skuddår på. Antar at det er derfor det deles på 365.25? skal jeg være helt ærlig var jeg ganske sikker på at det var deg jeg hadde fått den av, ????????, men det er vel ikke det da.... Lenke til kommentar
Gilbert Skrevet 7. november 2004 Del Skrevet 7. november 2004 (den har sitt opphav her fra hw-forumet:D): Vel akkurat den tviler jeg litt på. for å si det på en annen måte; jeg fikk den på hw-forumet, hvor den jeg fikk den av fikk den fra, det vet jeg ikke Lenke til kommentar
???????? Skrevet 7. november 2004 Del Skrevet 7. november 2004 skal jeg være helt ærlig var jeg ganske sikker på at det var deg jeg hadde fått den av, ????????, men det er vel ikke det da.... Jeg pleier ikke å skrive koder for andre, pleier heller å gi linker og tips, og jeg kan heller ikke huske den koden så tror ikke du har fått den av meg. Lenke til kommentar
bazzo Skrevet 19. februar 2006 Del Skrevet 19. februar 2006 Men hvordan får jeg ut alder i år, mnd og dag? eks. Du er 30 år, 3 mnd og 20 dager Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå