2016-02-12 198 views
0

我有一個<select>與多個允許的選擇在同一時間。我希望在提交表單後保留所有選定的值。這個怎麼做?如何記住選擇標籤中的多個選定選項?

我試過followig,但對於一個選擇這隻作品...

<select multiple name="example" method="POST" action="<? echo $_SERVER['PHP_SELF']?>"> 
    <option value="optA" <?php if ($_POST['example'] === "optA"){echo 'selected="selected"';} ?>>Option A</option> 
    <option value="optB" <?php if ($_POST['example'] === "optB"){echo 'selected="selected"';} ?>>Option B</option> 
</select> 

預期地將始終遵循返回最新選定的選項:

<?php if (isset($_POST['example'])){echo $_POST["example"];} ?> 

那麼,怎樣才能實現我我的目標?許多thx提前! :)

+0

爲什麼使用「===」?你應該使用「==」 – FareedMN

+0

嘗試執行'print_r($ _ POST ['example'])'而不是回顯 – Tomanow

+1

更改'name =「example」'爲'name =「example []」'並執行'print_r($ _POST [示例])'。 – Apb

回答

2

使用數組作爲POST變量,就像這樣:

<select multiple name="example[]"> 
    // options 
</select> 

而像這樣進行檢索:

print_r($_POST['example']); 

我建議存儲在數組作爲選項值和名稱好了,所以它更容易處理:

$options = array(
    array(
    'value' => 0, 
    'name' => 'A' 
), 
    array(
    'value' => 1, 
    'name' => 'B' 
), 
    array(
    'value' => 2, 
    'name' => 'C' 
), 
    array(
    'value' => 3, 
    'name' => 'D' 
) 
); 

然後,只需簡單地創建你選擇的選項,使用foreach循環,並檢查當前選項是否在您的帖子變量中:

<select multiple name="example[]"> 
    <?php foreach ($options as $option) { ?> 
    <option value="<?php echo $option['value']; ?>"<?php echo (isset($_POST['example']) && in_array($option['value'], $_POST['example'])) ? ' selected="selected"' : ''; ?>><?php echo $option['name']; ?></option> 
    <?php } ?> 
</select> 
+0

感謝這很好地工作!我改變了PHP爲'<?php if(in_array(「optA」,$ _POST [「example」])){echo'selected =「selected」';}?>'。你認爲這是最好的方式嗎? – Alex