从PHP数组和包括不匹配的数据库值构建选择菜单


PHP - Building Select Menu from PHP Array and including non matching database value

我正在从PHP数组$times生成一个HTML选择菜单,它看起来像这样:

Array ( [9:00am] => 9:00am [9:30am] => 9:30am [9:45am] => 9:45am [10:00am] => 10:00am [10:30am] => 10:30am [10:45am] => 10:45am [11:00am] => 11:00am [11:30am] => 11:30am [11:45am] => 11:45am [12:00pm] => 12:00pm [12:30pm] => 12:30pm [12:45pm] => 12:45pm [1:00pm] => 1:00pm [1:30pm] => 1:30pm [1:45pm] => 1:45pm [2:00pm] => 2:00pm [2:30pm] => 2:30pm [2:45pm] => 2:45pm [3:00pm] => 3:00pm [3:30pm] => 3:30pm [3:45pm] => 3:45pm [4:00pm] => 4:00pm [4:30pm] => 4:30pm [4:45pm] => 4:45pm [5:00pm] => 5:00pm [5:30pm] => 5:30pm [5:45pm] => 5:45pm [6:00pm] => 6:00pm [-] => - )

我按如下方式构建选择菜单,比较每个选项以查看它是否与数据库记录中的值匹配,以便可以将其标记为已选择:

<?php 

$output = ";

foreach($times as $time) {
$time = htmlspecialchars($time);
    if ($time == $record->getField('HotPhotoTime')) {
    $output = "<option value='".$time."' selected='selected' >$time</option>";  
    } else {
    $output = "<option value='".$time."'>$time</option>";  
    }
    echo $output;

}?>

我现在需要更新它来处理来自数据库记录的值:

的情况
$time == $record->getField('HotPhotoTime')

实际上不是选择菜单中的选项之一,例如"5:15pm"。这目前不会显示为被选中,但任何不匹配的值都应该包含在选择菜单中并标记为已选中。

这是一个适合您需要的示例。希望对你有帮助。

<?php
$times = array(
'01:00' => '01:00',
'02:00' => '02:00',
'03:00' => '03:00',
'04:00' => '04:00',
'05:00' => '05:00',
'06:00' => '06:00',
'07:00' => '07:00',
'08:00' => '08:00',
'09:00' => '09:00'
);
$addThisTime = '04:15';
if(!in_array($addThisTime,$times))
{
    $times[''.$addThisTime.''] = $addThisTime;
    ksort($times);
}

$html = '<select name="yourSelect" id="yourSelectID">';
foreach($times as $v)
{
    $html .= '<option value="'.$v.'" '.(strcmp($v,$addThisTime)==0 ? 'selected' : '').'>'.$v.'</option>';
}
$html .= '</select>';
echo $html;