PHP如何保持选定的选项从下拉列表中保持选中状态?

时间:2010-12-22 17:01:30

标签: php variables drop-down-menu selected

我有:

<select name="topic" style="margin-bottom:3px;"> 
    <option>General Question</option>
    <option>Company Information</option>
    <option>Customer Issue</option>
    <option>Supplier Issue</option>
    <option>Request For Quote</option>
    <option>Other</option>
</select>

下拉。提交表单后,会转到验证页面。如果它有错误,表单会保留用户输入的原始内容。我让它适用于所有输入字段和textarea,但是如何通过下拉菜单来完成?

我使用输入字段:

$name = $_REQUEST["name"];

并且以再次出现的形式出现(忽略它在表格中的事实):

<tr>
    <td>Name:*</td>
     </tr>
     <tr>
    <td><input name="name" type="text" size="15" value="<?php echo $name ?>" maxlength="200" /></td>
     </tr>

那么,任何关于下降的想法?

2 个答案:

答案 0 :(得分:1)

您需要将“selected”属性添加到适当的选项中。我相信你还需要为每个选项指定value属性。我不确切知道你是如何生成该列表的,但也许这会有所帮助:

<?php
$options = array( 1=>'General Question', 'Company Information', 'Customer Issue', 'Supplier Issue', 'Supplier Issue', 'Request For Quote', 'Other' );
$topic = $_REQUEST['topic']; // the topic name would now be $options[$topic]

// other PHP etc...
?>

<select name="topic" style="margin-bottom:3px;"> 
    <?php foreach ( $options as $i=>$opt ) : ?>
        <option value="<?php echo $i?>" <?php echo $i == $topic ? 'selected' : ''?>><?php echo $opt ?></option>
    <?php endforeach; ?>
</select>

答案 1 :(得分:0)

首先,给option元素赋一个value属性。这使得代码更加健壮,因为如果您决定更改选项的文本,它不会中断。之后:

<?php $topic = $_REQUEST['topic']; ?>
<?php $attr = 'selected="selected"'; ?>
<select name="topic" style="margin-bottom:3px;"> 
    <option value="1" <?php echo $topic == 1 ? $attr : ''; ?>>General Question</option>
    <option value="2" <?php echo $topic == 2 ? $attr : ''; ?>>Company Information</option>
    <option value="3" <?php echo $topic == 3 ? $attr : ''; ?>>Customer Issue</option>
    <option value="4" <?php echo $topic == 4 ? $attr : ''; ?>>Supplier Issue</option>
    <option value="5" <?php echo $topic == 5 ? $attr : ''; ?>>Request For Quote</option>
    <option value="6" <?php echo $topic == 6 ? $attr : ''; ?>>Other</option>
</select>