Our CodeIgniter-based website has a section showing the last time a user logged in (using days if necessary and hrs, min, sec). I’m trying to make it print “day” when the result is 1 day and “days” when it is over 1 day. At the moment 1 day shows as 1 day but 2 days (and above) shows as 2 day 2 days. Can you see what I’ve done wrong here and modify the code?
$dDf = day
$hDf = hour
$mDf = minute
$sDf = second
<?php
if ($dDf < 1) {
if ($hDf > 0) {
if ($mDf < 0) {
$mDf = 60 + $mDf;
$hDf = $hDf - 1;
echo $mDf . ' min';
} else {
echo $hDf . ' hr ' . $mDf . ' min';
}
} else {
if ($mDf > 0) {
echo $mDf . ' min ' . $sDf . ' sec';
} else {
echo $sDf . ' sec';
}
}
} else {
echo $dDf . ' days ';
if ($dDf > 1) {
if ($hDf > 0) {
if ($mDf < 0) {
$mDf = 60 + $mDf;
$hDf = $hDf - 1;
echo $mDf . ' min';
} else {
echo $hDf . ' hr ' . $mDf . ' min';
}
} else {
if ($mDf > 0) {
echo $mDf . ' min ' . $sDf . ' sec';
} else {
echo $sDf . ' sec';
}
}
} else {
echo $dDf . ' day ';
if ($hDf > 0) {
if ($mDf < 0) {
$mDf = 60 + $mDf;
$hDf = $hDf - 1;
echo $mDf . ' min';
} else {
echo $hDf . ' hr ' . $mDf . ' min';
}
} else {
if ($mDf > 0) {
echo $mDf . ' min ' . $sDf . ' sec';
} else {
echo $sDf . ' sec';
}
}
}
}
?>
Is there a reason why you wouldn’t want to use the built-in
timespan()function for this?