dc_jt Posted May 17, 2007 Share Posted May 17, 2007 Hi I have the following code which is a drop down containing a month and a year. At the moment, the months are displayed 1,2,3,4 etc, however I want them to be displayed as Jan, Feb, Mar etc but the values to remain 01, 02, 03 etc. <form name="date" action="<?=$_SERVER['PHP_SELF']?>?sMode=ChangeFilter" method="POST" class="sort"> <label>Date:</label> <select name="datem" id="datem"> <?php $iCurMonth = ('5'); for ($i=1;$i<=12;$i++) { ?> <option <?=((isset($aFilterParts['datem']) && $i==$aFilterParts['datem']) || (!isset($aFilterParts['datem']) && $i==$iCurMonth))?' selected="selected"':''?>><?=$i?></option> <?php } ?> </select> <select name="datey" id="datey"> <?php $iCurYear = ('2007'); for ($i=2007;$i<=2009;$i++) { ?> <option <?=((isset($aFilterParts['datey']) && $i==$aFilterParts['datey']) || (!isset($aFilterParts['datey']) && $i==$iCurYear))?' selected="selected"':''?>><?=$i?></option> <?php } ?> </select> <input type="Submit" name="submit" value="Submit"/> </form> Thanks Quote Link to comment Share on other sites More sharing options...
kenrbnsn Posted May 17, 2007 Share Posted May 17, 2007 Create an array to hold the names of the months and use $i to index to the correct one. <?php $mnths = array('January','February','March','April','May','June','July','August','September','October','November','December'); $iCurMonth = ('5'); for ($i=1;$i<=12;$i++) { $sel = ((isset($aFilterParts['datem']) && $i==$aFilterParts['datem']) || (!isset($aFilterParts['datem']) && $i==$iCurMonth))?' selected="selected"':''; echo '<option ' . $sel . ' value=' . $i . '>' . $mnths[$i] . '</option>'; } ?> Ken Quote Link to comment Share on other sites More sharing options...
taith Posted May 17, 2007 Share Posted May 17, 2007 or just use this :-) <?php function switch_month($m){ while($m{0}=="0") $m=substr($m,1); $m=strtolower($m); switch($m){ case "1": return "january"; break; case "2": return "february"; break; case "3": return "march"; break; case "4": return "april"; break; case "5": return "may"; break; case "6": return "june"; break; case "7": return "july"; break; case "8": return "august"; break; case "9": return "september"; break; case "10": return "october"; break; case "11": return "november"; break; case "12": return "december"; break; case "january": return "1"; break; case "february": return "2"; break; case "march": return "3"; break; case "april": return "4"; break; case "may": return "5"; break; case "june": return "6"; break; case "july": return "7"; break; case "august": return "8"; break; case "september": return "9"; break; case "october": return "10"; break; case "november": return "11"; break; case "december": return "12"; break; } } #and on yourloop <?=switch_month($i)?> ?> Quote Link to comment Share on other sites More sharing options...
dc_jt Posted May 17, 2007 Author Share Posted May 17, 2007 Thanks a lot, this worked, however January is not included for some reason?? Hi I have the following code which is a drop down containing a month and a year. At the moment, the months are displayed 1,2,3,4 etc, however I want them to be displayed as Jan, Feb, Mar etc but the values to remain 01, 02, 03 etc. <form name="date" action="<?=$_SERVER['PHP_SELF']?>?sMode=ChangeFilter" method="POST" class="sort"> <label>Date:</label> <select name="datem" id="datem"> <?php $iCurMonth = ('5'); for ($i=1;$i<=12;$i++) { ?> <option <?=((isset($aFilterParts['datem']) && $i==$aFilterParts['datem']) || (!isset($aFilterParts['datem']) && $i==$iCurMonth))?' selected="selected"':''?>><?=$i?></option> <?php } ?> </select> <select name="datey" id="datey"> <?php $iCurYear = ('2007'); for ($i=2007;$i<=2009;$i++) { ?> <option <?=((isset($aFilterParts['datey']) && $i==$aFilterParts['datey']) || (!isset($aFilterParts['datey']) && $i==$iCurYear))?' selected="selected"':''?>><?=$i?></option> <?php } ?> </select> <input type="Submit" name="submit" value="Submit"/> </form> Thanks Quote Link to comment Share on other sites More sharing options...
kenrbnsn Posted May 17, 2007 Share Posted May 17, 2007 My mistake, add a null for the first value of the array: <?php $mnths = array('','January','February','March','April','May','June','July','August','September','October','November','December'); ?> Ken Quote Link to comment Share on other sites More sharing options...
taith Posted May 17, 2007 Share Posted May 17, 2007 yup... because without '', $i=1=febuary... Quote Link to comment Share on other sites More sharing options...
dc_jt Posted May 17, 2007 Author Share Posted May 17, 2007 Thanks a lot Ken, great help. One last question. How do I set the $iCurMonth to the current month rather than 5, because obviously next month wont be 5? Thanks again Quote Link to comment Share on other sites More sharing options...
dc_jt Posted May 17, 2007 Author Share Posted May 17, 2007 Does $iCurMonth = getdate("mon"); do it? Quote Link to comment Share on other sites More sharing options...
taith Posted May 17, 2007 Share Posted May 17, 2007 change it to date(m), so it automatically highlights this month :-) Quote Link to comment Share on other sites More sharing options...
kenrbnsn Posted May 17, 2007 Share Posted May 17, 2007 You can use the date() function: <?php $iCurMonth = date('m'); ?> Ken Quote Link to comment Share on other sites More sharing options...
dc_jt Posted May 17, 2007 Author Share Posted May 17, 2007 Thanks Ken and taith for your help Quote Link to comment 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.