2012-12-26 33 views
2

我有这个下拉和用户可以选择多个选项,如何在提交按钮后保留选定的值,如果错误发生形式显示多个选定的提交后的值,如果提交后出现错误

<th align="right" style="width: 264px"><label id="lcell">*Preferred City for Relocation Work :</label></th> 
<td><select onchange="document.getElementById('cand_pref').style.display='none';" name="pcity[]" id="pcity" multiple="multiple" > 
<?php 
$pcitylist = array(
    'Mizoram' => array('Aizawl', 'Champhai', 'Kolasib', 'Lawngtlai', 'Lunglei', 'Mamit', 'Saiha', 'Serchhip'), 
    'Nagaland' => array('Dimapur', 'Kohima', 'Mokokchung', 'Mon', 'Phek', 'Tuensang', 'Wokha', 'Zunheboto'), 
    'Orissa' => array('Angul', 'Boudh', 'Bhadrak', 'Bolangir', 'Bargarh', 'Baleswar', 'Cuttack', 'Debagarh', 'Dhenkanal', 'Ganjam', 'Gajapati', 'Jharsuguda', 'Jajapur', 'Jagatsinghpur', 'Khordha', 'Kendujhar', 'Kalahandi', 'Kandhamal', 'Koraput', 'Kendrapara', 'Malkangiri', 'Mayurbhanj', 'Nabarangpur', 'Nuapada', 'Nayagarh', 'Puri', 'Rayagada', 'Sambalpur', 'Subarnapur', 'Sundargarh'), 
    'Puducherry' => array('Karaikal', 'Mahe', 'Puducherry', 'Yanam') 
); 

foreach ($pcitylist as $key => $pcitylist1) { 
    echo '<optgroup label="'.$key.'">'; 
     foreach ($pcitylist1 as $finalCity) { 
      echo '<option value="' . $finalCity . '"' . (isset($_POST['pcity']) && $_POST['pcity'] == $finalCity ? ' selected' : '') . '>' . $finalCity . '</option>'; 
     } 
    echo '</optgroup>'; 
} 
?> 
</select></td> 
+0

我没有看过您的问题,只是因为您的代码格式严重不足... – Linas

+0

错误在哪里? – Hkachhia

+0

使用“选择多个”,然后用$ _post值,这些值与匹配放在选择代码 –

回答

3

您使用选择与名称pcity [] 在这种情况下在$ _POST ['pcity']将数组的选定值。 而你应该用in_array()函数来检查项目是否被选中。

echo '<option value="' . $finalCity . '"' . (isset($_POST['pcity']) && in_array($finalCity, $_POST['pcity']) ? ' selected' : '') . '>' . $finalCity . '</option>';