如何从数据库中设置<select>标签的值?</select>

时间:2013-11-04 13:37:17

标签: php html

我从数据库中选择要在html / php上编辑的条目。我写的代码(从我所学到的)不起作用。我需要一个更好的工作。我搜索过Google,但我看到的只是标记的默认值。

    $civil_status = $row[8]; //value from selecting the database

    <tr> 
    <td>Civil Status:</td> 
    <td><select name="civil_status" value='<?php $civil_status ?>'>
    <option value="single">Single</option>
    <option value="married">Married</option>
    </select></td>
    </tr>

4 个答案:

答案 0 :(得分:1)

您需要在选项标记中设置selected="selected"。尝试这样

$civil_status = $row[8]; //value from selecting the database
    <tr> 
    <td>Civil Status:</td> 
    <td><select name="civil_status">
    <option value="single" <?php if($civil_status == 'Single') echo 'selected="selected"';?>>Single</option>
    <option value="married" <?php if($civil_status == 'Married') echo 'selected="selected"';?>>Married</option>
    </select></td>
    </tr>

答案 1 :(得分:1)

您需要选中要选择的选项,然后打印所选标签:

$civil_status = $row[8]; //value from selecting the database
<tr> 
<td>Civil Status:</td> 
<td><select name="civil_status" >
<option value="single" <?php $civil_status=="single" ? print "selected" : ""; ?> >Single</option>
<option value="married" <?php $civil_status=="married" ? print "selected" : ""; ?> >Married</option>
</select></td>
</tr>

答案 2 :(得分:1)

你可以用快速和肮脏的方式做到:

<tr>
    <td>Civil Status:</td> 
    <td>
        <select name="civil_status">
            <option value="single"<?php print($civil_status == "single" ? ' selected="selected"' : ""); ?>>Single</option>
            <option value="married"<?php print($civil_status == "married" ? ' selected="selected"' : ""); ?>>Married</option>
        </select>
    </td>
</tr>

或者您可以编写辅助函数来生成整个<option>集:

function select_options($options, $selected)
{
    $result = "";
    foreach($options as $value => $label)
    {
         $result .= '<option value="' . 
             htmlentities($value, ENT_QUOTES, "UTF-8") . '"' . 
             ($selected == $value ? ' selected="selected"' : "") . '>' .
             htmlentities($label, ENT_QUOTES, "UTF-8") . '</option>';
    }
    return $result;
}

select_options 需要两个参数。第一个是关联数组(key => value, ...),其中数组键是各个value标记的<option>参数值,以及数组值包含要为每个键显示的标签。

第二个参数指定要在选择框中选择的项目的value

然后该函数遍历数组并为每个项目提取valuelabel。然后它将相应的<option>标记附加到结果字符串。它还会对参数调用htmlentities以避免cross-site scripting个漏洞。

然后是踢球者:如果它看到应该在选择框中选择的项目($selected == $value),它会自动将selected="selected"参数附加到<option>标记,从而选择那个元素。

要使用此功能,请执行以下操作:

<tr>
    <td>Civil Status:</td> 
    <td>
        <select name="civil_status">
            <?php
                  print(select_options(array(
                       "single" => "Single",
                       "married" => "Married"
                  ), $civil_status));
            ?>
        </select>
    </td>
</tr>

在您创建选择菜单所需的任何位置都可以更清洁,更可重复使用。

答案 3 :(得分:0)

你能试试吗,

       <?php   
          $civil_status = $row[8]; //$civil_status ='married';
          $civil_statuses = array('single', 'married'); 
        ?>

        <select name="civil_status">
            <?php foreach($civil_statuses as $status){ ?>
                <option value="<?php echo $status;?>" <?php  echo if($civil_status==$status){ echo 'selected';} ?> ><?php echo ucfirst($status);?></option>
            <?php }?>
        </select>
相关问题