dth20986 2011-10-04 09:51
浏览 34
已采纳

在验证表单期间设置select元素值的其他方法?

Normally I would do something like this:

<select name="myselect">
  <option value="opt1" <?=($_POST['myselect']=="opt1"?"SELECTED":"")?>>Option 1</option>
  <option value="opt2" <?=($_POST['myselect']=="opt2"?"SELECTED":"")?>>Option 2</option>
</select>

However this time I've taken a list of all the countries in a select from this website: http://snippets.dzone.com/posts/show/376

To go through each of those and put in the validation will be insane.

There is a php solution in the comments but it seems somewhat inelegant.

Is there an alternative way to do this or something similar? I would prefer not to use javascript, and I'm not sure I want to rely on the browser caching.

Thanks

  • 写回答

3条回答 默认 最新

  • douchuoliu4422 2011-10-04 09:58
    关注
    // I'm using integers as key values in this example. Modify as needed.    
    $countries = array(
      1 => 'Some Country',
      // etc...
    );
    
    // Sanitize as needed, casting to integer in my example
    $selectedCountryCode = isset( $_POST['myselect'] ) ? (int) $_POST['myselect'] : null;
    
    $select = '<select name="myselect">';
    foreach( $countries as $countryCode => $countryName )
    {
        $selected = $selectedCountryCode == $countryCode ? ' selected="selected"' : '';
        $select .= '<option value="' . $countryCode .'"' . $selected . '>' . $countryName . '</option>';
    }
    $select .= '</select>';
    
    echo $select;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?