wintallo Posted February 13, 2008 Share Posted February 13, 2008 Hey, I'm making a program that need a dropdown menu with timezones in it. So I wrote a function to output the menu, with an optional parameter of certain timezone to have automatically selected. here's my code. function output_timezone_menu($timezone = 0) { echo "<select name=\"timezone\">"; if ( $timezone == -12 ) { echo "<option value=\"-12\">GMT - 12 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-12\">GMT - 12 Hours</option>"; } if ( $timezone == -11 ) { echo "<option value=\"-11\">GMT - 11 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-11\">GMT - 11 Hours</option>"; } if ( $timezone == -10 ) { echo "<option value=\"-10\">GMT - 10 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-10\">GMT - 10 Hours</option>"; } if ( $timezone == -9 ) { echo "<option value=\"-9\">GMT - 9 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-9\">GMT - 9 Hours</option>"; } if ( $timezone == -8 ) { echo "<option value=\"-8\">GMT - 8 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-8\">GMT - 8 Hours</option>"; } if ( $timezone == -7 ) { echo "<option value=\"-7\">GMT - 7 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-7\">GMT - 7 Hours</option>"; } if ( $timezone == -6 ) { echo "<option value=\"-6\">GMT - 6 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-6\">GMT - 6 Hours</option>"; } if ( $timezone == -5 ) { echo "<option value=\"-5\">GMT - 5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-5\">GMT - 5 Hours</option>"; } if ( $timezone == -4 ) { echo "<option value=\"-4\">GMT - 4 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-4\">GMT - 4 Hours</option>"; } if ( $timezone == -3.5 ) { echo "<option value=\"-3.5\">GMT - 3.5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-3.5\">GMT - 3.5 Hours</option>"; } if ( $timezone == -3 ) { echo "<option value=\"-3\">GMT - 3 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-3\">GMT - 3 Hours</option>"; } if ( $timezone == -2 ) { echo "<option value=\"-2\">GMT - 2 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-2\">GMT - 2 Hours</option>"; } if ( $timezone == -1 ) { echo "<option value=\"-1\">GMT - 1 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-1\">GMT - 1 Hours</option>"; } if ( $timezone == 0 ) { echo "<option value=\"0\">GMT</option>"; } else { echo "<option selected=\"selected\" value=\"0\">GMT</option>"; } if ( $timezone == 1 ) { echo "<option value=\"1\">GMT + 1 Hour</option>"; } else { echo "<option selected=\"selected\" value=\"1\">GMT + 1 Hour</option>"; } if ( $timezone == 2 ) { echo "<option value=\"2\">GMT + 2 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"2\">GMT + 2 Hours</option>"; } if ( $timezone == 3 ) { echo "<option value=\"3\">GMT + 3 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"3\">GMT + 3 Hours</option>"; } if ( $timezone == 3.5 ) { echo "<option value=\"3.5\">GMT + 3.5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"3.5\">GMT + 3.5 Hours</option>"; } if ( $timezone == 4 ) { echo "<option value=\"4\">GMT + 4 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"4\">GMT + 4 Hours</option>"; } if ( $timezone == 4.5 ) { echo "<option value=\"4.5\">GMT + 4.5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"4.5\">GMT + 4.5 Hours</option>"; } if ( $timezone == 5 ) { echo "<option value=\"5\">GMT + 5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"5\">GMT + 5 Hours</option>"; } if ( $timezone == 5.5 ) { echo "<option value=\"5.5\">GMT + 5.5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"5.5\">GMT + 5.5 Hours</option>"; } if ( $timezone == 6 ) { echo "<option value=\"6\">GMT + 6 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"6\">GMT + 6 Hours</option>"; } if ( $timezone == 6.5 ) { echo "<option value=\"6.5\">GMT + 6.5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"6.5\">GMT + 6.5 Hours</option>"; } if ( $timezone == 7 ) { echo "<option value=\"7\">GMT + 7 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"7\">GMT + 7 Hours</option>"; } if ( $timezone == 8 ) { echo "<option value=\"8\">GMT + 8 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"8\">GMT + 8 Hours</option>"; } if ( $timezone == 9 ) { echo "<option value=\"9\">GMT + 9 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"9\">GMT + 9 Hours</option>"; } if ( $timezone == 9.5 ) { echo "<option value=\"9.5\">GMT + 9.5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"9.5\">GMT + 9.5 Hours</option>"; } if ( $timezone == 10 ) { echo "<option value=\"10\">GMT + 10 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"10\">GMT + 10 Hours</option>"; } if ( $timezone == 11 ) { echo "<option value=\"11\">GMT + 11 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"11\">GMT + 11 Hours</option>"; } if ( $timezone == 12 ) { echo "<option value=\"12\">GMT + 12 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"12\">GMT + 12 Hours</option>"; } if ( $timezone == 13 ) { echo "<option value=\"13\">GMT + 13 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"13\">GMT + 13 Hours</option>"; } echo "</select>"; } Is there a more elegant or faster way to do this? It seems like all of the if statements could really slow down the load time. What I'm asking is there some other condition structure I could use to speed up the process? Thanks! -wintallo Quote Link to comment Share on other sites More sharing options...
toplay Posted February 13, 2008 Share Posted February 13, 2008 A switch statement can be used, but a better approach is simply to use an array to hold your timezone values. Then simply use "for" or "foreach" to walk through the array and display. Quote Link to comment Share on other sites More sharing options...
kenrbnsn Posted February 13, 2008 Share Posted February 13, 2008 Put all the possible timezones in an array and loop through the array: <?php function output_timezone_menu($timezone = 0) { $tzones = array(-12,-11,-10,-9,-8,-7,-6,-5,-4,-3.5,-3,-2,-1,0,1,2,3,3.5,4,4.5,5,5.5,6,6.5,7,8,9,9.5,10,11,12,13); $tmp = array(); $tmp[] = '<select name="timezone">'; foreach ($tzones as $tz) { $sel = ($tz == $timezone)?' selected="selected"':''; $mp = ($tz < 0)?' - ':' + '; $gmt = ($tz != 0)?'GMT' . $mp . abs($tz) . ' Hours':'GMT'; $tmp[] = '<option value="' . $tz . '"' . $sel . '>' . $gmt . '</option>'; } $tmp[] = '</select>'; echo implode("\n",$tmp) . "\n"; } ?> Tested. Works. Ken Quote Link to comment Share on other sites More sharing options...
wintallo Posted February 13, 2008 Author Share Posted February 13, 2008 Thanks a lot guys! <solved> Quote Link to comment Share on other sites More sharing options...
haku Posted February 13, 2008 Share Posted February 13, 2008 Don't just type <solved>, click the 'solved' button. The whole point is for people to be able to see that the problem has been solved without coming into the thread. Quote Link to comment Share on other sites More sharing options...
kenrbnsn Posted February 13, 2008 Share Posted February 13, 2008 The "Solved" button has been MIA since the forum was upgraded a few days ago. Ken Quote Link to comment Share on other sites More sharing options...
haku Posted February 13, 2008 Share Posted February 13, 2008 Crappy! My apologies to wintallo. 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.