我正在努力成为更好的PHP编码器。我找到的解决方案有效(下图),但看起来这不是最好的解决方法。任何更好的开发人员是否可以使用更普遍可用的数据库中的数组重新选择多选列表中的项目?感谢您帮助我成为更好的开发人员。
<?php
$optFood = '';
$optMedication = '';
$optVaccinations = '';
$optMedicalServices = '';
$optVaccinations = '';
$optOutdoorHousing = '';
$optOther = '';
$options = explode(",", mysql_result($call, 0, 'assistNeeds'));
foreach($options as $val) {
${"opt".str_replace(' (See Notes)','',str_replace(' ','',$val))} = "selected=\"selected\"";
}
?>
<select name="assistNeeds[]" size="6" multiple class="span2" id="assistNeeds" tabindex="12" title="Select All">
<option <?php echo $optFood ?> value="Food">Food</option>
<option <?php echo $optMedication ?> value="Medication">Medication</option>
<option <?php echo $optMedicalServices ?> value="Medical Services">Medical Services</option>
<option <?php echo $optVaccinations ?> value="Vaccinations">Vaccinations</option>
<option <?php echo $optOutdoorHousing ?> value="Outdoor Housing">Outdoor Housing</option>
<option <?php echo $optOther ?> value="Other (See Notes)">Other (See Notes)</option>
</select>
答案 0 :(得分:1)
您可以使用foreach循环来简化它,以便从数组$assistNeeds
创建选项。
<select name="assistNeeds[]" size="6" multiple="multiple" class="span2" id="assistNeeds" tabindex="12" title="Select All">
<?php
$options = explode(",", mysql_result($call, 0, 'assistNeeds'));
$assistNeeds = array("Food","Medication","Medical Services","Vaccinations","Outdoor Housing","Other (See Notes)");
foreach($assistNeeds as $option) {
$selected = (in_array($option, $options)) ? ' selected="selected"' : '';
echo '<option'.$selected.' value="'.$option.'">'.$option.'</option>';
}
?>
</select>
这个phpfiddle - http://phpfiddle.org/main/code/kkb-4q2 - 在示例中使用$options = explode(",", "Food,Vaccinations");