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

1 に答える 1

3

select を pcity[] という名前で使用します。この場合、$_POST['pcity'] は選択された値の配列になります。また、どの項目が選択されたかを確認するには、 in_array()関数を使用する必要があります。

echo '<option value="' . $finalCity . '"' . (isset($_POST['pcity']) && in_array($finalCity, $_POST['pcity']) ? ' selected' : '') . '>' . $finalCity . '</option>';
于 2012-12-26T12:05:37.563 に答える