2010-12-06 149 views
2

我有一個表格,當數據需要一些編輯時顯示。此表格中包含有多個選擇框字段即如何根據數據庫中的csv重新填充/重新選擇/自動選擇多個選擇框值?

<select name="multiple" multiple> 
     <option value="1">asd</option> 
     <option value="2">asaad</option> 
     <option value="3">aslan</option> 
</select> 

現在,當我來到這個形式,我得到填充在各自的領域現有的每個值,但我沒有得到填充此多選框。在db中,其相應的值以csv格式存儲,如2,3,4

現在我該如何使用這些csv並重新填充csv的各個選擇框?

回答

1

我假設您爲selectbox生成HTML迭代$options。然後,只需檢查每次迭代中是否存在當前值$csv並將selected參數添加到選項中。

$selection = explode(',', $csv); 
foreach ($options as $value => $name) { 
    $selected = in_array($value, $selection) ? ' selected="selected"' : ''; 
    echo '<option value="'. $value .'"'. $selected .'>'. $name .'</option>'; 
} 
1

這可能幫助,但有可能是一個更好的辦法...

$csvString = "1,3"; 
$options = explode(",", $csvString); 
foreach($options as $val) { 
    ${"opt".$val} = "selected=\"selected\""; 
} 
?> 
<select ...> 
    <option value="1" <?php echo $opt1 ?> >Option 1</option> 
    <option value="2" <?php echo $opt2 ?> >Option 2</option> 
    <option value="3" <?php echo $opt3 ?> >Option 3</option> 
</select> 
+0

這樣做沒有把實際的選擇字段中循環的有趣的方式。 – CyberJunkie 2011-07-23 02:07:27

2
<? 
$csvString = "1,3"; 

?> 
<select name="multiple" multiple> 
    <option value="1" <?=strpos($csvString ,'1')!== false?'selected="selected"':''?> >Option 1</option> 
    <option value="2" <?=strpos($csvString ,'2')!== false?'selected="selected"':''?> >Option 2</option> 
    <option value="3" <?=strpos($csvString ,'3')!== false?'selected="selected"':''?> >Option 3</option> 
</select> 
+0

這是如何回答這個問題的? – DaveHogan 2013-10-19 21:32:52

相關問題