如何根据php中的变量选择下拉选项

时间:2014-06-17 07:04:38

标签: php html

我有一个下拉列表。

 <select>
      <option value="Mr">Mr</option>
      <option value="Dr">Dr</option>
      <option value="Prof">Prof</option>      
    </select>

我从$selected_value变量的数据库中获取值。基于此值,我想从上面的选项中选择一个选项为selected

例如:如果$selected_value =先生,<option value="Mr" selected>Mr</option>

如果$selected_value = Dr,<option value="Dr" selected>Dr</option>

更新 现在,当我正在检查元素时,我会变得像下面一样。但是没有选择Dr.但是它正在w3schools中尝试编辑。

<select>
<option value="Mr">Mr</option>
<option value="Dr" selected="selected">Dr</option>
<option value="Prof">Prof</option>
</select>

更新2

见屏幕截图: enter image description here

UPDATE3

现在它有效!添加了<select>

的名称

9 个答案:

答案 0 :(得分:3)

这对您有用

试试这段代码

<select>
   <option value="Mr" <?=($selected_value=="Mr") ? "selected" : ""?>>Mr</option>
   <option value="Dr" <?=($selected_value=="Dr") ? "selected" : ""?>>Dr</option>
</select>

答案 1 :(得分:2)

根据您当前的HTML使用以下代码:

<select name="your_select_name">
 <option <?php echo (($selected_value=="Mr")?"selected":"") ?> value="Mr">Mr</option>
 <option <?php echo (($selected_value=="Dr")?"selected":"") ?> value="Mr">Dr</option>
 <option <?php echo (($selected_value=="Prof")?"selected":"") ?> value="Mr">Prof</option>
</select>

如果此变量($selected_value)的值返回&#34; Dr&#34; ,则会选择第二个选项。并且还提供您的选择标记的名称。

答案 2 :(得分:1)

我改变了我的解决方案,所以它适合你的希望。

更新:

    <select name="dropdownlist">
        <?
            $options = array("Mr", "Dr", "Prof");
            foreach($options as $option){
                if($_POST['dropdownlist'] == $option){
                    echo '<option selected="selected">' .$option. '</option>';
                }else{
                    echo '<option>' .$option. '</option>';
                }
            }
        ?>
    </select>

答案 3 :(得分:1)

试试这个..

<option value="Mr" <?php if($selected_value == 'Mr') echo 'selected' ?>>Mr</option>
      <option value="Dr" <?php if($selected_value == 'Dr') echo 'selected' ?>>Dr</option>
      <option value="Prof" <?php if($selected_value == 'Prof') echo 'selected' ?>>Prof</option>

或者您可以使用jquery

<script>
$('select option[value="<?php echo $selected_value ?>"]').attr('selected','true')
</script>

答案 4 :(得分:1)

如果您还有一个选项数组,则可以通过循环遍历每个选项标记来创建选项标记。在那个循环中,您可以检查$selected_value是否匹配$option_value,如此:

<select>
<?php foreach($options as $option_value => $option_displayName) : ?>
<option 
  value="<?php echo $option_value; ?>" 
  <?php echo $option_value == $selected_value ? 'selected' : ''; ?>>
<?php echo $option_displayName; ?>
</option>
<?php endforeach; ?>
</select>

答案 5 :(得分:1)

要执行您想要的操作,您必须动态构建选择,如下例所示:

<?php 

$selects = array(
  array('name' => 'Mr', 'value' => 'Mr'),
  array('name' => 'Dr', 'value' => 'Dr'),
  array('name' => 'Prof', 'value' => 'Prof'),
);

$selected_option = 'Dr';

echo '<select>';
foreach($selects as $select) {
    if($select['value'] == $selected_option) {
        echo '<option value="'.$select['value'].'" selected>' .$select['name']. '</option>';
    } else {
        echo '<option value="'.$select['value'].'">' .$select['name']. '</option>';
    }
}
echo '</select>';

?>

哪个输出:

<select>
<option value="Mr">Mr</option>
<option value="Dr" selected>Dr</option>
<option value="Prof">Prof</option>
</select>

Example

答案 6 :(得分:1)

请尝试以下操作。

<select name="select_options">
  <option value="Mr">Mr</option>
  <option value="Dr">Dr</option>
  <option value="Prof">Prof</option>      
</select>

点击提交按钮后。然后,您将获得$_POST['select_options']

的价值

答案 7 :(得分:1)

有很多方法可以实现您的目标。我可以想到两种直接的方法。

第一个是丑陋的: 在每个选项中插入一个php标记并检查是否选择了值:

<select>
  <option <?php if ($selected_value == 'Mr') echo 'selected'; ?> value="Mr">Mr</option>
  <option <?php if ($selected_value == 'Dr') echo 'selected'; ?> value="Dr">Dr</option>
  <option <?php if ($selected_value == 'Prof') echo 'selected'; ?> value="Prof">Prof</option>      
</select>

否则,我会亲自写一个小帮手

function generateSelect(array $entries, $selected)
{
    $ret = '<select>'
    foreach ($entries as $entry) {
        $ret .= '<option';
        if ($entry == $selected) {
            $ret .= ' selected';
        }
        $ret .= ' value="'.$entry.'"';
        $ret .= '>'.$entry.'</option'>;
    }
    return $ret;
}

这只是一个例子,它的功能可以扩展。它应该工作,但我自己没有尝试过(快速写下来)

答案 8 :(得分:0)

你的语法错误

<select>
<option value="Mr">Mr</option>
<option value="Dr" selected="selected">Dr</option>
<option value="Prof">Prof</option>
</select>

这将起作用

<select>
<option value="Mr">Mr</option>
<option value="Dr" selected>Dr</option>
<option value="Prof">Prof</option>
</select>