DeanWhitehouse Posted December 5, 2008 Share Posted December 5, 2008 I am trying to find out whether a student is still on a course with this function i wrote <?php function work_out_yr_status($started,$duration) { $started = strtotime($started); $start_month = date("n",$started); $start_year = date("Y",$started); $current_month = date("n"); $current_year = date("Y"); $yr_duration = $duration; $end_month = 6; $yr_difference = $current_year - $start_year; for($i = 0;$i <= $yr_duration;$i++) { if($yr_difference > $yr_duration && $current_month > $end_month) { echo "Course completed in "; echo $start_year + $yr_duration; } elseif($yr_difference == $i && $current_month >= $start_month)//first academic year and before new year { echo "first academic year and before new year"; } elseif($yr_difference == $i && $current_month <= $end_month) { echo "first academic year and after new year"; } } } ?> How ever this prints out "first academic year and before new year", which i think is correct, but i need it to do this Year 1 - completed Year 2 - in progress Year 3 - not started This is a for loop i use <?php for($i = 1;$i <= 2;$i++) { work_out_yr_status("2007-09-05 19:31:11",2); echo " Year ".$i."<hr align=\"center\">"; $member -> get_program_units($id,$i); echo "<br><br>"; } ?> It prints out first academic year and before new year Year 1 first academic year and before new year Year 2 Obviously the text and display i can do , but i can't think of the logic for the function. Any help please Quote Link to comment https://forums.phpfreaks.com/topic/135703-solved-work-out-year-status/ Share on other sites More sharing options...
premiso Posted December 5, 2008 Share Posted December 5, 2008 Your for loop only goes twice, so the year 3 is impossible to print out right now. <?php function work_out_yr_status($started,$duration) { $started = strtotime($started); $start_month = date("n",$started); $start_year = date("Y",$started); $current_month = date("n"); $current_year = date("Y"); $yr_duration = $duration; $end_month = 6; $yr_difference = $current_year - $start_year; for($i = 0;$i <= $yr_duration;$i++) { if($yr_difference > $yr_duration && $current_month > $end_month) { echo "Course completed in "; echo $start_year + $yr_duration; } elseif($yr_difference == $i && $current_month >= $start_month)//first academic year and before new year { echo "in progress"; } elseif($yr_difference == $i && $current_month <= $end_month) { echo "completed"; }else { echo "not started"; } } } ?> I think that is what you are looking for? Quote Link to comment https://forums.phpfreaks.com/topic/135703-solved-work-out-year-status/#findComment-707051 Share on other sites More sharing options...
DeanWhitehouse Posted December 5, 2008 Author Share Posted December 5, 2008 Lol, sorry no. i put in static numbers so it would be easier to understand the actual values are dynamic. I believe i have fixed it, this is the current function <?php function work_out_yr_status($started,$duration,$i) { $started = strtotime($started); $start_month = date("n",$started); $start_year = date("Y",$started); $current_month = date("n"); $current_year = date("Y"); $yr_duration = $duration; $end_month = 6; $yr_difference = $current_year - $start_year; if($yr_difference > $yr_duration && $current_month > $end_month) { echo "Course completed in "; echo $start_year + $yr_duration; } elseif($yr_difference == $i && $current_month >= $start_month || $yr_difference == $i && $current_month <= $end_month) { echo "In progress"; } else echo "Not started"; } ?> And my loop to run it <?php for($i = 1;$i <= $program[0]['length'];$i++) { work_out_yr_status($details['started'],$program[0]['length'],$i); echo "Year ".$i."<hr align=\"center\">"; $member -> get_program_units($id,$i); echo "<br><br>"; } ?> Quote Link to comment https://forums.phpfreaks.com/topic/135703-solved-work-out-year-status/#findComment-707056 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.