pgdx Skrevet 24. april 2004 Del Skrevet 24. april 2004 Jeg holder på å lage et script som skal regne ut antall år en person er. Fødselsdatoen ligger i MySQL under dato, mnd og aar. Hva er letteste måten å regne ut alderen? Jeg henter ut de tre integerne og legger de i $dato, $mnd og $aar. Lenke til kommentar
Blib Skrevet 24. april 2004 Del Skrevet 24. april 2004 (endret) Ta dagens årstall minus det året som brukeren ble født i? Er ikke heeelt sikker på om jeg skjønte spørsmålet ditt liksom Men dagens år får du iallefall glatt tak i via date() Endret 24. april 2004 av Blib Lenke til kommentar
pgdx Skrevet 24. april 2004 Forfatter Del Skrevet 24. april 2004 (endret) Det er disse jeg må bruke, sant? date(d) date(m) date(Y) $antallaar = $aar - date(Y); Men hva med resten? Endret 24. april 2004 av Toolshed Lenke til kommentar
eXZire Skrevet 24. april 2004 Del Skrevet 24. april 2004 Se på kommentarene på http://no2.php.net/manual/en/function.date.php Mange alder-fra-fødselsdag kalkulatorer der.. prøv noen av dem og se om du kan bruke dem Lenke til kommentar
magikern Skrevet 24. april 2004 Del Skrevet 24. april 2004 vel jeg brukte noe som dette en gang i tiden riktignok uten db, men det er lett å fixe: <?php /* fast dato i fortid */ $base_day = 9; // ikke bruk ledende "0" $base_mon = 3; // ikke bruk ledende "0" $base_yr = 1983; // 4 siffer! /* finn nåværende dato (i dag) -- hvis du trenger fast dato her se oppskrift over */ $current_day = date ("j"); $current_mon = date ("n"); $current_yr = date ("Y"); /* og så .... regner vi ut differansen! :-) /* overskudd kommer alltid av maks dager i $base_mon så vi trenger å vite hvor mange dager $base_mon hadde */ $base_mon_max = date ("t",mktime (0,0,0,$base_mon,$base_day,$base_yr)); /* dager igjen av mnd */ $base_day_diff = $base_mon_max - $base_day; /* mnd igjen av året minus 1 for å iberegne overskudd */ $base_mon_diff = 12 - $base_mon - 1; /* start på 1. jan neste året */ $start_day = 1; $start_mon = 1; $start_yr = $base_yr + 1; /* differanse til "den" 1. jan $day_diff = ($current_day - $start_day) + 1; // legg til i dag $mon_diff = ($current_mon - $start_mon) + 1; // legg til nåværende mnd $yr_diff = ($current_yr - $start_yr); // og legg til resten av $base_yr $day_diff = $day_diff + $base_day_diff; $mon_diff = $mon_diff + $base_mon_diff; // håndter overskudd av dager if ($day_diff >= $base_mon_max){ $day_diff = $day_diff - $base_mon_max; $mon_diff = $mon_diff + 1; } // håndter overskudd av år if ($mon_diff >= 12){ $mon_diff = $mon_diff - 12; $yr_diff = $yr_diff + 1; } // her er resultatet: // $yr_diff --> årene mellom de to datoene // $mon_diff --> mnd mellom de to datoene // $day_diff --> dager mellom de to datoene // **************************************************************************** // enkelt og greit print "Tiden mellom <strong>".$base_yr."-".$base_mon."-".$base_day."</strong> "; print "og <strong>".$current_yr."-".$current_mon."-".$current_day."</strong> er:"; // bare for å pynte litt $years = "år"; $days = "dager"; if ($yr_diff == "1") $years = "år"; if ($day_diff == "1") $days = "dag"; // her kommer det print $yr_diff." ".$years.", "; print $mon_diff." mnd og "; print $day_diff." ".$days; ?> ps: litt rask oversetting fra engelsk... Lenke til kommentar
???????? Skrevet 24. april 2004 Del Skrevet 24. april 2004 Fungerer det scriptet? Hva med tider før 1970 og skuddår? Du finner sikkert mange ferdige scripts på hotscripts.com eller google.com Lenke til kommentar
magikern Skrevet 24. april 2004 Del Skrevet 24. april 2004 (endret) Fungerer det scriptet?Hva med tider før 1970 og skuddår? Du finner sikkert mange ferdige scripts på hotscripts.com eller google.com se her: http://magikern.sytes.net/code/php/time/da...date=1970-11-21 Edit: skrev det om litt nå Endret 24. april 2004 av magikern Lenke til kommentar
???????? Skrevet 24. april 2004 Del Skrevet 24. april 2004 (endret) Du må fortsatt rette opp skuddår: http://magikern.sytes.net/code/php/time/da..._date=200-29-02 Edit: den linken var litt dårlig, mente: http://magikern.sytes.net/code/php/time/da...date=2000-29-02 Endret 24. april 2004 av ???????? Lenke til kommentar
pgdx Skrevet 24. april 2004 Forfatter Del Skrevet 24. april 2004 (endret) Tusen takk, magikern! Her er den ferdiglaget til MySQL: <?php mysql_connect("database", "username", "pass") or die("Could not connect : " . mysql_error()); mysql_select_db("lagring_net") or die("Could not select database"); $query = "SELECT * FROM `tabell`"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); while ($myrow = mysql_fetch_row($result)) { $user = $myrow[1]; $dato = $myrow[4]; $mnd = $myrow[5]; $aar = $myrow[6]; $base_day = $dato; $base_mon = $mnd; $base_yr = $aar; $current_day = date ("j"); $current_mon = date ("n"); $current_yr = date ("Y"); $base_mon_max = date ("t",mktime (0,0,0,$base_mon,$base_day,$base_yr)); $base_day_diff = $base_mon_max - $base_day; $base_mon_diff = 12 - $base_mon - 1; $start_day = 1; $start_mon = 1; $start_yr = $base_yr + 1; $day_diff = ($current_day - $start_day) + 1; // legg til i dag $mon_diff = ($current_mon - $start_mon) + 1; // legg til nåværende mnd $yr_diff = ($current_yr - $start_yr); $day_diff = $day_diff + $base_day_diff; $mon_diff = $mon_diff + $base_mon_diff; if ($day_diff >= $base_mon_max){ $day_diff = $day_diff - $base_mon_max; $mon_diff = $mon_diff + 1; } if ($mon_diff >= 12){ $mon_diff = $mon_diff - 12; $yr_diff = $yr_diff + 1; } $years = "år"; $days = "dager"; if ($yr_diff == "1") $years = "år"; if ($day_diff == "1") $days = "dag"; print $user." er ".$yr_diff." ".$years."<br />"; } mysql_free_result($result); mysql_close(mysql_connect("database", "username", "pass")); ?> Edit: Jeg har ikke tatt med visning av antall måneder og dager man er. Kun alderen i år. Endret 24. april 2004 av Toolshed Lenke til kommentar
???????? Skrevet 24. april 2004 Del Skrevet 24. april 2004 Skal du kun beregne år kan du forenkle scriptet en god del. Ta år nå - definert år og så sammenligner du bare dagen i året date("z"). Lenke til kommentar
pgdx Skrevet 24. april 2004 Forfatter Del Skrevet 24. april 2004 Du har rett, ???????? (er du fornøyd med brukernavnet ditt?), så jeg modifiserte det litt... Noen som ser noen bugs? <?php $aar = 1970; $mnd = 01; $dato = 01; $alder = date(Y) - $aar - 1; if ($mnd < date(m)) { $alder++; } if (($mnd == date(m)) && ($dato < (date(d)))) { $alder++; } echo("$alder"); ?> Lenke til kommentar
Zeph Skrevet 24. april 2004 Del Skrevet 24. april 2004 Er ikkje topic rett og slett elendig? Lenke til kommentar
pgdx Skrevet 24. april 2004 Forfatter Del Skrevet 24. april 2004 Er ikkje topic rett og slett elendig? Jo, det må man kunne si. Og det samme kan man si om posten din... Lenke til kommentar
magikern Skrevet 25. april 2004 Del Skrevet 25. april 2004 Du må fortsatt rette opp skuddår:http://magikern.sytes.net/code/php/time/da..._date=200-29-02 Edit: den linken var litt dårlig, mente: http://magikern.sytes.net/code/php/time/da...date=2000-29-02 hmm, ja får se på det etterhvert... Lenke til kommentar
???????? Skrevet 25. april 2004 Del Skrevet 25. april 2004 Du har rett, ???????? (er du fornøyd med brukernavnet ditt?) Okay, forsiktig nå hmm, ja får se på det etterhvert... Fort gjort å glemme sånne ting, men de kan fort gjøre et script "mindre brukbart" 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å