Forenkling af kode og sortering af database værdi
Hej,Jeg har et script der ser på en fødselsdagsdato (F.eks. 24-12-1983) og udskriver hvor mange dage der er til ens fødselsdag og hvor gammel man bliver. (F.eks.: Peter bliver 14 år om 180 dage)
Tabellen med oplysningerne hedder users og dato, måned og år er delt op i hver sin række.
Scriptet fungerer fint, men jeg kunne godt tænke mig at resultatet bliver sorteret, så den person der har fødselsdag tættest på, står først. F.eks.:
Peter bliver 14 år om 180 dage
Helen fylder 35 år om 200 dage
Niels fylder 20 år om 250 dage
Er det derudover muligt at forenkle koden?
Her er koden:
function birthDay($day,$month,$year){
if($day<10){
$day=str_replace("0", "", $day);
}
if($month<10){
$maaned=str_replace("0", "", $month);
}
if(strlen($year)==2){
$year="19".$year;
}
$todayArr = getdate();
$today = mktime(0,0,0,$todayArr["mon"],$todayArr["mday"],$todayArr["year"]);
$future = mktime(0,0,0,$month,$day);
$birth = mktime(0,0,0,$month,$day,$year);
if($today > $future)
{
$futureYear = date("Y", $future);
$futureYear++;
$future = mktime(0,0,0,$month,$day,$futureYear);
$age = date("Y", $today) - $year + 1;
}
else
{
$age = date("Y", $today) - $year;
}
$secLeft = $future - $today;
$secDay = 24 * 60 * 60;
$daysLeft = floor($secLeft/$secDay);
/*
if ($daysLeft > 7)
$VAR="nej";
else
*/
if ($daysLeft > 1)
$VAR= "fylder " . $age . " år om " . $daysLeft . " dage";
else if ($daysLeft == 1)
$VAR= "fylder " . $age . " år <b>imorgen</b>";
else if ($today == $future)
$VAR= "fylder " . $age . " år <b>idag!</b>";
else
$VAR="Passed";
RETURN $VAR;
}
$bdays=mysql_query("SELECT * FROM users")or DIE(mysql_error());
while($row=mysql_fetch_assoc($bdays)){
if(birthDay($row[fosdag],$row[fosmaaned],$row[fosaar])!="nej"){
echo $row[nick]." ";
echo birthDay($row[fosdag],$row[fosmaaned],$row[fosaar]);
echo"<br>";
}
}
