4

I've got an html select drop down for 50 states, and i've got a default state value in PHP. Is there an easier way to set the default select value than doing

<option value="NY" <?php if ($default_state == 'NY') echo 'selected="selected"'; ?>New York</option>

50 times?

In other words, do I have to run a check in each option?

1
  • You could set the default state first and skip that check in a loop. At some point you will have to set selected like this though. Commented Mar 14, 2012 at 21:24

1 Answer 1

12

I'd create an array of the state abbreviations and loop through them, checking to see if the state matches the default and then appending the necessary HTML.

Here's a quick (functional) code example. Note you could shorten the array to just the two letter abbreviations if you wanted:

<select>
<?php
$default = "NJ";
$states = array('AL'=>"Alabama",  
            'AK'=>"Alaska",  
            'AZ'=>"Arizona",  
            'AR'=>"Arkansas",  
            'CA'=>"California",  
            'CO'=>"Colorado",  
            'CT'=>"Connecticut",  
            'DE'=>"Delaware",  
            'DC'=>"District Of Columbia",  
            'FL'=>"Florida",  
            'GA'=>"Georgia",  
            'HI'=>"Hawaii",  
            'ID'=>"Idaho",  
            'IL'=>"Illinois",  
            'IN'=>"Indiana",  
            'IA'=>"Iowa",  
            'KS'=>"Kansas",  
            'KY'=>"Kentucky",  
            'LA'=>"Louisiana",  
            'ME'=>"Maine",  
            'MD'=>"Maryland",  
            'MA'=>"Massachusetts",  
            'MI'=>"Michigan",  
            'MN'=>"Minnesota",  
            'MS'=>"Mississippi",  
            'MO'=>"Missouri",  
            'MT'=>"Montana",
            'NE'=>"Nebraska",
            'NV'=>"Nevada",
            'NH'=>"New Hampshire",
            'NJ'=>"New Jersey",
            'NM'=>"New Mexico",
            'NY'=>"New York",
            'NC'=>"North Carolina",
            'ND'=>"North Dakota",
            'OH'=>"Ohio",  
            'OK'=>"Oklahoma",  
            'OR'=>"Oregon",  
            'PA'=>"Pennsylvania",  
            'RI'=>"Rhode Island",  
            'SC'=>"South Carolina",  
            'SD'=>"South Dakota",
            'TN'=>"Tennessee",  
            'TX'=>"Texas",  
            'UT'=>"Utah",  
            'VT'=>"Vermont",  
            'VA'=>"Virginia",  
            'WA'=>"Washington",  
            'WV'=>"West Virginia",  
            'WI'=>"Wisconsin",  
            'WY'=>"Wyoming");

foreach($states as $key=>$val) {
    echo ($key == $default) ? "<option selected=\"selected\" value=\"$key\">$val</option>":"<option value=\"$key\">$val</option>";
}
?>
</select>
Sign up to request clarification or add additional context in comments.

4 Comments

I thought Yarin is creating this in a loop. Otherwise the check makes no sense.
additionally, since he's got 5 dropdowns, each selecting the relevant state, then he could create a function called createStateDropDown($stateName) or whatever and call it every time he needs this, rather than building the array loop each time
@Smamatti - According to the code in the question, the OP is checking the code for every state and writing 50 options "50 times for each state?".
Sorry was poorly worded- clarified the ques- just one dropdown. Thanks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.