Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 247
  • Last Modified:

Age counter only counting years

Hi experts,

In my site I've got two age counters in a loop but they only count the years.

For example someone with birth date 2003-9-30 will be precented as a 7 years old person.
But he should be precented as a 6 year old. What should I change in my current code set this right?

Thanks

<?php
if(!isset($_POST['team'])){header("Location: samenstellen_keuze.php");} 
include('../includes/config.php'); 
access_control();

if(isset($_GET['moveto'])){$type = $_GET['moveto'];
	if ($type == "right"){
		if(isset($_POST['moveright'])){
			$moveright_array = $_POST['moveright'];
			foreach($moveright_array as $value1){
			  $sql="INSERT INTO functies (functietype, groepsID, persoonsID) VALUES ('41', '{$_POST['team']}', '$value1')";
			  $Result1 = mysql_query($sql,$con)or die(mysql_error());
			}
		unset($_POST['moveright']);
		}
	}
	if ($type == "left"){
		if(isset($_POST['moveleft'])){
			$moveleft_array = $_POST['moveleft'];
			foreach($moveleft_array as $value2){
	  		  	mysql_select_db($database, $con);
			  	$sql="delete from functies where functietype = '41' AND groepsID = '{$_POST['team']}' AND persoonsID = '$value2'";
			  	$Result1 = mysql_query($sql,$con)or die(mysql_error());
			}
		unset($_POST['moveleft']);  
		}
	}
}

$sql = "SELECT id, naam FROM groepen where id=". $_POST['team'];
$rs = mysql_query($sql);
$row = mysql_fetch_array($rs)
?>
<html>
<head>
<link rel='stylesheet' href='../tree1.css'>
</head>
<body>
<form name="samenstellen" method="post" action="samenstellen.php?moveto=right">
<table align="center" border=0>
<tr><td colspan=3 align="center"><h3>Team indelingen</h3></td></tr>
<?
if(isset($_POST['leeftijdvan']) && $_POST['leeftijdtot'] != "") {
echo "<tr><td align=\"center\"><b>Leden database <font size=1>(gefilterd van ". $_POST['leeftijdvan']. " jaar tot ". $_POST['leeftijdtot']." jaar)<br>Minus de leden die al aan teams zijn toegewezen</font></b></td><td></td><td align=\"center\"><b>Team : ". $row['naam'] ."</b></td></tr>";
}else{
echo "<tr><td align=\"center\"><b>Leden database <font size=1>(Geen filter op leeftijd)<br>Minus de leden die al aan teams zijn toegewezen</font></b></td><td></td><td align=\"center\"><b>Team : ". $row['naam'] ."</b></td></tr>";
}
?>	
<tr>
<td> 
<select style="width: 300px; overflow:auto;" multiple="multiple" SIZE="40" name="moveright[]">
<?php

if(isset($_POST['leeftijdvan']) && $_POST['leeftijdtot'] != "") {
$sql="SELECT * FROM personen WHERE str_to_date(geboortedatum,'%Y-%m-%d') <= date_add(CURDATE(), INTERVAL -".$_POST['leeftijdvan']." YEAR) and str_to_date(geboortedatum,'%Y-%m-%d') > date_add(CURDATE(), INTERVAL -1 -".$_POST['leeftijdtot']." YEAR) AND ID not in (select persoonsID from functies where functietype = '41') order by achternaam";
}else{
	echo "geen filter";
$sql="SELECT * FROM personen WHERE ID not in (select persoonsID from functies where functietype = '41') order by achternaam";
}	
$rs = mysql_query($sql);

while($row = mysql_fetch_array($rs))
{
	
	if (!($row['geboortedatum'] == "")){
		$arrDate = explode('-', $row['geboortedatum']); 
		//$timestamp = mktime( 0 , 0 , 0 , $arrDate[1], $arrDate[2], $arrDate[0]);
		$jaren= date( "Y" ) - $arrDate[0];
	  	echo "<option value=\"".$row['id']."\">".$row['achternaam'].", ". $row['voornaam']." ". $row['tussenvoegsel']. " (". $jaren. " Jaar) ".$row['geboortedatum']."\n  ";
	}else{
      	echo "<option value=\"".$row['id']."\">".$row['achternaam'].", ". $row['voornaam']." ". $row['tussenvoegsel']."\n  ";
	}	
}
?>
</select>
</td><td>
<input name="submit" type="submit" value="Voeg toe >" /><br>
<input type=hidden value="<? echo $_POST['team']; ?>" name="team" id="team">		        
<input type=hidden value="<? echo $_POST['leeftijdvan']; ?>" name="leeftijdvan" id="leeftijdvan">		        
<input type=hidden value="<? echo $_POST['leeftijdtot']; ?>" name="leeftijdtot" id="leeftijdtot">		        
</form>

<form name="samenstellen" method="post" action="samenstellen.php?moveto=left">
<input name="submit" type="submit" value="< Verwijder" /></td>
<td>
<select style="width: 300px; overflow:auto;" multiple="multiple" SIZE="40" name="moveleft[]">
<?php
$sql = "SELECT personen.id, voornaam, tussenvoegsel, achternaam, geboortedatum FROM personen INNER JOIN functies ON personen.id = functies.persoonsID WHERE functies.groepsID ='".$_POST['team']."' AND functies.functietype = '41'  ORDER BY achternaam";
$rs = mysql_query($sql);
while($row = mysql_fetch_array($rs))
{
	if (!($row['geboortedatum'] == "")){
		$arrDate = explode('-', $row['geboortedatum']); 
		//$timestamp = mktime( 0 , 0 , 0 , $arrDate[1], $arrDate[2], $arrDate[0]);
		$jaren= date( "Y" ) - $arrDate[0];
	  	echo "<option value=\"".$row['id']."\">".$row['achternaam'].", ". $row['voornaam']." ". $row['tussenvoegsel']. " (". $jaren. " Jaar) ".$row['geboortedatum']."\n";
	}else{
      	echo "<option value=\"".$row['id']."\">".$row['achternaam'].", ". $row['voornaam']." ". $row['tussenvoegsel']."\n";
	}	
}
?>
</select>
<input type=hidden value="<? echo $_POST['team']; ?>" name="team" id="team">		        
<input type=hidden value="<? echo $_POST['leeftijdvan']; ?>" name="leeftijdvan" id="leeftijdvan">		        
<input type=hidden value="<? echo $_POST['leeftijdtot']; ?>" name="leeftijdtot" id="leeftijdtot">			        

</td></tr>
<tr><td align="center" colspan=3><INPUT type="button" value="Terug" onClick="location.href='../../beheer/verkeersplein.php'"><INPUT type="button" value="Een ander team kiezen" onClick="location.href='samenstellen_keuze.php'"></td></tr>
</table>
</form>
</body>
</html>

Open in new window

0
Steynsk
Asked:
Steynsk
  • 2
1 Solution
 
Ray PaseurCommented:
Can't quite follow your code, but here is a teaching example of how to get the age on a given date.

HTH, ~Ray
<?php // RAY_age_on_date.php
error_reporting(E_ALL);

// A FUNCTION TO RETURN THE AGE ON A GIVEN DATE
function age_group($birth_date, $test_date='Today')
{
    // IF THE DATE IS NOT USABLE
    if (!$timestamp = strtotime($birth_date)) return FALSE;
    if (!$teststamp = strtotime($test_date))  return FALSE;

    // GET THE YEAR AND SUBTRACT FROM THIS YEAR
    $year_birth = date('Y', $timestamp);
    $year_now   = date('Y', $teststamp);
    $years_elapsed = $year_now - $year_birth - 1;

    // GET THE MONTH AND DAY IN THE STYLE OF ISO8601 DATES
    $moday_birth = date('m-d', $timestamp);
    $moday_cut   = date('m-d', $teststamp);

    // IF THE BIRTHDAY IS BEFORE CUTOFF ADD ONE YEAR
    if ($moday_birth <= $moday_cut) $years_elapsed++;

    return $years_elapsed;
}


// TEST DATA
echo "<pre>";

// A BIRTHDAY
$dt = date('Y-m-d', strtotime('tomorrow'));

// COUNT BACKWARDS FOR EACH BIRTHDAY
while ($dt > '1990-05-01')
{
    echo "\nA CHILD BORN ON " . $dt; echo " WILL BE AGE " . age_group($dt) . " TODAY";
    $dt = date('Y-m-d', strtotime($dt . ' - 1 day'));
}

Open in new window

0
 
SteynskAuthor Commented:
Thanks a lot, exactly the function I needed
0
 
Ray PaseurCommented:
You're welcome, it's a great question -- thanks for the points! ~Ray
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now