Gå til innhold

Og hvor gammel er så du, vennen?


Anbefalte innlegg

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
Videoannonse
Annonse

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 av Blib
Lenke til kommentar

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

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 av Toolshed
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...