2010-12-22 44 views
0

我:PHP如何從下拉菜單中選擇選項以保持提交時的選擇?

<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> 

那麼,下拉式的任何想法?

回答

0

首先,給選項元素一個值屬性。這使得代碼更加健壯,因爲如果您決定更改選項的文本,它不會中斷。之後:

<?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> 
1

您需要將「selected」屬性添加到適當的選項。我相信你也需要爲每個選項指定值屬性。我不知道你是如何生成該列表,但也許這將有助於:

<?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>