我的代码会生成一个选择下拉菜单,时间是从上午8:00到下午6:00。选择选项并保存表单后,时间将正确保存在数据库中。但是,我无法自动检索时间。到目前为止,这是我的代码:
<select value="<?php echo $starttime; ?>" name="data[InvoiceTime][<?php echo $key;?>][starttime]" id="starttime_<?php echo $key+1?>" class="form-control" autocomplete="off">
<?php
$time = mktime(0, 0, 0, 1, 1);
for ($i = 28800; $i < 42600; $i += 900) { // 1800 = half hour, 86400 = one day
printf('<option value="%1$sam">%1$sam</option>',
date('g:i', $time + $i), date('g:i a', $time + $i + 1800));
}
for ($i = 43200; $i < 65000; $i += 900) { // 12pm-6pm
printf('<option value="%1$spm">%1$spm</option>',
date('g:i', $time + $i), date('g:i a', $time + $i + 1800));
}
?>
</select>
Desired output : select "9:00am" and save form 9:00am is saved to db(which happens) reload form 9:00 appears preselected due to data saved in db
Actual output : select "9:00am" and save form 9:00am is saved to db reload form 8:00am appears(default value)
以下代码有效,但不会生成选项值:
<select value="<?php echo $starttime; ?>" name="data[InvoiceTime][<?php echo $key;?>][starttime]" id="starttime_<?php echo $key+1?>" class="form-control" autocomplete="off">
<option value="8:00am" <?= ($item['starttime']) == '8:00am' ? 'selected' : '' ?>>8:00am</option>
<option value="9:00am" <?= ($item['starttime']) == '9:00am' ? 'selected' : '' ?>>9:00am</option>
</select>
答案 0 :(得分:0)
您只需将检查值移到现有代码中。
但是,我已经简化了你的代码;我不确定你用printf()
语句想要完成什么。 gmdate()
为happy to work with just seconds(您不希望使用date()
,因为它可能会根据您当前的时区产生意外结果。)如果<option>
元素没有有value
属性,而是使用内容,所以我删除了它。你应该总是将你的PHP与HTML分开(理想情况下,这比我在这里完成的要多,但这是一个开始。)
如果您不熟悉它们,请参阅ternary statement和heredoc blocks上的一些信息。
<?php
$start = 28800;
$stop = 65000;
$interval = 900;
$options = "";
for ($seconds = $start; $seconds <= $stop; $seconds += $interval) {
$time = gmdate("g:ia", $seconds);
$selected = ($item["starttime"] === $time) ? " selected" : "";
$options .= sprintf("<option %s>%s</option>", $selected, $time);
}
echo <<< HTML
<select value="$starttime" name="data[InvoiceTime][$key][starttime]" id="starttime_$key" class="form-control" autocomplete="off">
$options
</select>
HTML;