开发者

Please tell me there is a better way of doing this?

开发者 https://www.devze.com 2023-02-17 01:46 出处:网络
<label for=\"state\" class=\"medium\">State</label> <select name=\"state\"> <option value=\"\" <?php if($_POST[\'state\'] ==\"\") { echo \"SELECTED\";} ?>>-- Select State
<label for="state" class="medium">State</label>
<select name="state">
    <option value="" <?php if($_POST['state'] =="") { echo "SELECTED";} ?>>-- Select State --</option>
    <option value="AL" <?php if($_POST['state'] =="AL") { echo "SELECTED";} ?>>Alabama</option>
    <option value="AK" <?php if($_POST['state'] =="AK") { echo "SELECTED";} ?>>Alaska</option>
    <option value="AZ" <?php if($_POST['state'] =="AZ") { echo "SELECTED";} ?>>Arizona</option>
    <option value="AR" <?php if($_POST['state'] =="AR") { echo "SELECTED";} ?>>Arkansas</option>
    <option value="CA" <?php if($_POST['state'] =="CA") { echo "SELECTED";} ?>>California</option>
    <option value="CO" <?php if($_POST['state'] =="CO") { echo "SELECTED";} ?>>Colorado</option>
    <option value="CT" <?php if($_POST['state'] =="CT") { echo "SELECTED";} ?>>Connecticut</option>
    <option value="DE" <?php if($_POST['state'] =="DE") { echo "SELECTED";} ?>>Delaware</option>
    <option value="DC" <?php if($_POST['state'] =="DC") { echo "SELECTED";} ?>>District of Columbia</option>
    <option value="FL" <?php if($_POST['state'] =="FL") { echo "SELECTED";} ?>>Florida</option>
    <option value="GA" <?php if($_POST['state'] =="GA") { echo "SELECTED";} ?>>Georgia</option>
    <option value="HI" <?php if($_POST['state'] =="HI") { echo "SELECTED";} ?>>Hawaii</option>
    <option value="ID" <?php if($_POST['state'] =="ID") { echo "SELECTED";} ?>>Idaho</option>
    <option value="IL" <?php if($_POST['state'] =="IL") { echo "SELECTED";} ?>>Illinois</option>
    <option value="IN" <?php if($_POST['state'] =="IN") { echo "SELECTED";} ?>>Indiana</option>
    <option value="IA" <?php if($_POST['state'] =="IA") { echo "SELECTED";} ?>>Iowa</option>
    <opti开发者_StackOverflow社区on value="KS" <?php if($_POST['state'] =="KS") { echo "SELECTED";} ?>>Kansas</option>
    <option value="KY" <?php if($_POST['state'] =="KY") { echo "SELECTED";} ?>>Kentucky</option>
    <option value="LA" <?php if($_POST['state'] =="LA") { echo "SELECTED";} ?>>Louisiana</option>
    <option value="ME" <?php if($_POST['state'] =="ME") { echo "SELECTED";} ?>>Maine</option>
    <option value="MD" <?php if($_POST['state'] =="MD") { echo "SELECTED";} ?>>Maryland</option>
    <option value="MA" <?php if($_POST['state'] =="MA") { echo "SELECTED";} ?>>Massachusetts</option>
    <option value="MI" <?php if($_POST['state'] =="MI") { echo "SELECTED";} ?>>Michigan</option>
    <option value="MN" <?php if($_POST['state'] =="MN") { echo "SELECTED";} ?>>Minnesota</option>
    <option value="MS" <?php if($_POST['state'] =="MS") { echo "SELECTED";} ?>>Mississippi</option>
    <option value="MO" <?php if($_POST['state'] =="MO") { echo "SELECTED";} ?>>Missouri</option>
    <option value="MT" <?php if($_POST['state'] =="MT") { echo "SELECTED";} ?>>Montana</option>
    <option value="NE" <?php if($_POST['state'] =="NE") { echo "SELECTED";} ?>>Nebraska</option>
    <option value="NV" <?php if($_POST['state'] =="NV") { echo "SELECTED";} ?>>Nevada</option>
    <option value="NH" <?php if($_POST['state'] =="NH") { echo "SELECTED";} ?>>New Hampshire</option>
    <option value="NJ" <?php if($_POST['state'] =="NJ") { echo "SELECTED";} ?>>New Jersey</option>
    <option value="NM" <?php if($_POST['state'] =="NM") { echo "SELECTED";} ?>>New Mexico</option>
    <option value="NY" <?php if($_POST['state'] =="NY") { echo "SELECTED";} ?>>New York</option>
    <option value="NC" <?php if($_POST['state'] =="NC") { echo "SELECTED";} ?>>North Carolina</option>
    <option value="ND" <?php if($_POST['state'] =="ND") { echo "SELECTED";} ?>>North Dakota</option>
    <option value="OH" <?php if($_POST['state'] =="OH") { echo "SELECTED";} ?>>Ohio</option>
    <option value="OK" <?php if($_POST['state'] =="OK") { echo "SELECTED";} ?>>Oklahoma</option>
    <option value="OR" <?php if($_POST['state'] =="OR") { echo "SELECTED";} ?>>Oregon</option>
    <option value="PA" <?php if($_POST['state'] =="PA") { echo "SELECTED";} ?>>Pennsylvania</option>
    <option value="RI" <?php if($_POST['state'] =="RI") { echo "SELECTED";} ?>>Rhode Island</option>
    <option value="SC" <?php if($_POST['state'] =="SC") { echo "SELECTED";} ?>>South Carolina</option>
    <option value="SD" <?php if($_POST['state'] =="SD") { echo "SELECTED";} ?>>South Dakota</option>
    <option value="TN" <?php if($_POST['state'] =="TN") { echo "SELECTED";} ?>>Tennessee</option>
    <option value="TX" <?php if($_POST['state'] =="TX") { echo "SELECTED";} ?>>Texas</option>
    <option value="UT" <?php if($_POST['state'] =="UT") { echo "SELECTED";} ?>>Utah</option>
    <option value="VT" <?php if($_POST['state'] =="VT") { echo "SELECTED";} ?>>Vermont</option>
    <option value="VA" <?php if($_POST['state'] =="VA") { echo "SELECTED";} ?>>Virginia</option>
    <option value="WA" <?php if($_POST['state'] =="WA") { echo "SELECTED";} ?>>Washington</option>
    <option value="WV" <?php if($_POST['state'] =="WV") { echo "SELECTED";} ?>>West Virginia</option>
    <option value="WI" <?php if($_POST['state'] =="WI") { echo "SELECTED";} ?>>Wisconsin</option>
    <option value="WY" <?php if($_POST['state'] =="WY") { echo "SELECTED";} ?>>Wyoming</option>
</select>


$states = array('AL'=>'Alabama','AK'=>'Alaska'...);

foreach($states as $k=>$state){
    echo '<option value="'.$k.'"'.($_POST['state'] == $k ? 'selected="selected"' :''). '>'.$state.'</option>';
}


That just cries for a hash table.

$States = array("NH" => "New Hampshire", "CA" => "California");

while (list($shortName, $longName) = each($States)) {
    if($_POST['state'] == $shortName) { echo "SELECTED";} echo $longName; ?></option>
}

(No guarantees on the exact syntax, this is just quickly written off the top of my head.)

EDIT: Okay, foreach would be preferred here:

foreach ($States as $shortName => $longName) {
    if($_POST['state'] == $shortName) { echo "SELECTED";} echo $longName; ?></option>
}


you can use shorter echoing ifs (aka tertiary operation):

for example:

<option value="AL" <?php echo (($_POST['state'] =="AL")?"SELECTED":'') ?>>Alabama</option>

the above example uses:

(boolean)?(if true):(if false)


Why don't you put the states in an array, then loop that array to construct all the <option>?


This produces what you want. A bit more complete than EboMike. (and no i didn't debug it.)

<?php $states = array("" => "--Select state--", "AL"=> "Alabama", "AK"=>"Alaska", etc=>etc...); ?>
<label for="state" class="medium">State</label>
<select name="state">
<?php foreach ($i in $states)
      {
          echo "<option value=\"" . $i . "\" ";
          if ($_POST['state'] == $i) //May want to add a strtoupper(...) here
              echo "SELECTED";
          echo ">" . $states[$i] . "</option>\n"
      }
 ?>
 </select>
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号