Anspaujd Posted September 18, 2014 Share Posted September 18, 2014 I am working on a form with php generated values. What I have right now is as follows: <tr> <td><p>ENTRY TERM: <select name="entry_term" > <option value="">Choose One:</option> <?php $year=date("Y"); for ($y=0;$y<5;$y++) { echo '<option value="Fall '.($year+$y).'">Fall '.($year+$y).'</option>'; echo '<option value="Spring '.($year+$y+1).'">Spring '.($year+$y+1).'</option>'; } ?> </select> </p></td> This currently generates a list of : Fall 2014 Spring 2015 Fall 2015 Spring 2016 Fall 2016 ...etc for next 5 years What I need to do is have this time sensitive to exclude once a specific month has passed. For example once August 2014 has started "Fall 2014" should be excluded... or when Jan 2015 has started "Spring 2015" should be excluded. Can someone help me solve this as I am unsure of how to move forward with this. Thanks, Quote Link to comment https://forums.phpfreaks.com/topic/291155-date-exclusion-on-form-population/ Share on other sites More sharing options...
ginerjm Posted September 18, 2014 Share Posted September 18, 2014 for ($y=0;$y<5;$y++) { if ($y==0) if (Date('m') <7) echo '<option value="Fall '.($year+$y).'">Fall '.($year+$y).'</option>'; echo '<option value="Spring '.($year+$y+1).'">Spring '.($year+$y+1).'</option>'; } This seems like it would eliminate the first occurrence of Fall once July has passed. We need more info on your Spring condition though. You do realized that once January has begun your initial $year value will not be 2014 again, so basically all dates will be > Jan 2015 1 Quote Link to comment https://forums.phpfreaks.com/topic/291155-date-exclusion-on-form-population/#findComment-1491541 Share on other sites More sharing options...
Anspaujd Posted September 18, 2014 Author Share Posted September 18, 2014 Yes I understand that the code as is will cut based on July which is why I am seeking guidance on expanding it to cut the current Fall if August is passed or cut the current Spring if January is passed. I have tried IF / ELSE but I can only make this work for the current month rather than excluding based on a specific month. Ultimately, I need this to read as follows: Fall 2014 Spring 2015 Fall 2015 ... etc if the month is before August After August it should read: Spring 2015 Fall 2015 Spring 2016 ... etc AT THE SAME TIME THE FORM NEEDS TO ALSO READ FOR JANUARY... meaning if January is passed it should read as: Fall 2015 Spring 2016 Fall 2016 ... etc Does this make sense? I was able to make it work to cut the Fall based on July as the month (or any month) but I need it to also dictate excluding Spring if the month is January. Quote Link to comment https://forums.phpfreaks.com/topic/291155-date-exclusion-on-form-population/#findComment-1491543 Share on other sites More sharing options...
Solution jcbones Posted September 18, 2014 Solution Share Posted September 18, 2014 Try this: <?php $year=date("Y"); for ($y=0;$y<5;$y++) { $month = date('n'); $controlYear = date('Y'); if(($month <= 1 && $controlYear == $year) || $controlYear != $year){ echo '<option value="Spring '.($year).'">Spring '.($year).'</option>'; } if(($month <= 7 && $controlYear == $year) || $controlYear != $year) { echo '<option value="Fall '.($year).'">Fall '.($year).'</option>'; } ++$year; } ?> Quote Link to comment https://forums.phpfreaks.com/topic/291155-date-exclusion-on-form-population/#findComment-1491547 Share on other sites More sharing options...
ginerjm Posted September 18, 2014 Share Posted September 18, 2014 You originally you wanted to skip Fall 2014 once August started - not finished. Plus once Jan 2015 arrives you will never encounter Fall 2014. So my example does exactly what you asked for for the Fall date, but you haven't said how you want to handle Jan 2015. Describe the time period - exactly - that you want to use to exclude Spring. As your description reads now, one will never see Spring for the current year. Is that what you want? If so you don't have to do anything to exclude it since the first one that can ever show up is the Spring for the following year which is not a problem according to you. So my post should do what you want. Quote Link to comment https://forums.phpfreaks.com/topic/291155-date-exclusion-on-form-population/#findComment-1491552 Share on other sites More sharing options...
Barand Posted September 18, 2014 Share Posted September 18, 2014 Start 6 months from current date then every 6 months. Spring if in first half of the year, Fall otherwise $today = '2014-07-01'; // used to set todays date for testing $dt1 = new DateTime($today); $dt1->add(new DateInterval('P6M')); $dt2 = clone $dt1; $dt2->add(new DateInterval('P5Y')); $dp = new DatePeriod($dt1, new DateInterval('P6M'), $dt2); // dates every 6 months for 5 years foreach ($dp as $d) { echo $d->format("Y "); if (1 <= $d->format('n') && $d->format('n') <= 6) { echo "Spring<br>"; } else { echo "Fall<br>"; } } 3 Quote Link to comment https://forums.phpfreaks.com/topic/291155-date-exclusion-on-form-population/#findComment-1491556 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.