0
<select name="state" class="input-small" selected="<? if(isset($_SESSION['user'])){ echo $row_login['state']; }?>">
  <option value="AL">AL</option>
  <option value="AK">AK</option>
  <option value="AZ">AZ</option>
  <option value="AR">AR</option>
  <option value="CA">CA</option>

我正在创建一个用户配置文件编辑部分,并且需要用户预选状态显示为列表默认值。我怎样才能做到这一点?

最好是不涉及 jquery 的东西,因为似乎应该有一个简单的解决方案来解决这个问题。谢谢!

4

2 回答 2

2
<select name="state" class="input-small">
<?php

$states = array('AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'DC', 'FL', 
'GA', 'HI', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 
'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', 
'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 
'WI', 'WY');

foreach ($states as $state)
{
    echo '<option ';
    if(isset($_SESSION['user']) && $row_login['state'] == $state)
    {
        echo 'selected="selected" ';
    }
    echo 'value="' . $state . '">' . $state . "</option>\n";
}

?>
</select>

只需将您的选项列表替换为上述内容,它将动态创建列表,然后在打印出每个选项时将检查该状态选项是否是用户拥有的选项。如果是,那么它将选择它作为默认值。比必须执行 if() 语句 50 次要容易得多。

于 2012-12-11T01:36:08.280 回答
0

一个麻烦的方法是,在每个选项上,如果用户的状态等于选项的状态,则回显 selected 。假设用户的状态是 in $row_login['state'];,它将是这样的:

<option value="AL" <?php if($row_login['state'] == "AL") echo " selected "; ?> >AL</option>

并为每个选项执行此操作。通常你会想以一种非常自动化的方式来做这件事。

于 2012-12-11T01:28:19.930 回答