添加"选择"属性为PHP中的选定选项

时间:2013-01-06 16:07:21

标签: php jquery

我正在创建我的页面构建器,但我对选择框没什么问题。

这就是我通过jQuery

创建选择框的方法
    var item_opts = '<select>'
        + '<option value="red">Red</option>'
        + '<option value="green">Green</option>'
        + '<option value="blue">Blue</option>'
        + '<option value="yellow">Yellow</option>'
    + '</select>'

$('.items_options').append(item_opts);

这就是我在PHP中的称呼

<select>
  <?php if ( $pb_item['message_color'] == "red" ) { ?>
    <option selected="selected" value="red">Red</option>
    <option value="green">Green</option>
    <option value="blue">Blue</option>
    <option value="yellow">Yellow</option>
  <?php } elseif ( $pb_item['message_color'] == "green" ) { ?>
    <option value="red">Red</option>
    <option selected="selected" value="green">Green</option>
    <option value="blue">Blue</option>
    <option value="yellow">Yellow</option>
  <?php } elseif ( $pb_item['message_color'] == "blue" ) { ?>
    <option value="red">Red</option>
    <option value="green">Green</option>
    <option selected="selected" value="blue">Blue</option>
    <option value="yellow">Yellow</option>
  <?php } else { ?>
    <option value="red">Red</option>
    <option value="green">Green</option>
    <option value="blue">Blue</option>
    <option selected="selected" value="yellow">Yellow</option>
  <?php } ?>                      
</select> 

是否有一些更好的解决方案如何将“选定”参数添加到所选选项中?

你的时间和建议:)

2 个答案:

答案 0 :(得分:4)

是的,有更好的解决方案

<select>
    <option <? ($pb_item['message_color'] == 'red'?'selected="selected"') ?> value="red">Red</option>
    <option <? ($pb_item['message_color'] == 'green'?'selected="selected"') ?> value="green">Green</option>
    <option <? ($pb_item['message_color'] == 'blue'?'selected="selected"') ?> value="blue">Blue</option>
    <option <? ($pb_item['message_color'] == 'yellow'?'selected="selected"') ?> value="yellow">Yellow</option>                   
</select>

即使您可以通过for循环列出选项,例如:

$colors = array('blue', 'red', ..);
foreach($colors as $color) {
    echo "<option ".($pb_item['message_color'] == $color?'selected="selected"')."value='$color'>" . ucwords($color) . "</option>";
}

答案 1 :(得分:0)

那些麻烦理解以前选择的答案由@ vlcekmi3在这里其他一些简单&amp;肮脏的解释。

$colors = array(
    1 => 'blue', 
    2 => 'red', ..); //init your array with key & value

foreach($colors as $key => $color) { // a loop 

    //print <option value="red"
    echo "<option value=".$key; 

    //print selected if your selected value matched -
    //please check before you echo 'selected' add a space before that
    //you will thank me later
    if($pb_item['message_color'] == $color){ echo " selected"; } 

    // close option with print '>'
    echo '>'; 

    // print your color name
    echo $color; 

    //print </option>
    echo "</option>"; 

}

我在这里解释的可能是一个肮脏的方式,但这段代码将帮助您了解如何将价值返回到您的视图。