我在表单上有一个下拉选择输入。我正在使用数据库中的先前值重新填充表单。
目前,下拉列表如下:$ selectedStart / $ selectedEnd是从数据库返回的值。该值在早上7:00返回为7:00:00
的HTML / PHP
<option value="7:00:00"<?php if ($selectedStart == '7:00:00') echo ' selected="selected"'; ?>>7:00am</option>
<option value="7:15:00"<?php if ($selectedStart == '7:15:00') echo ' selected="selected"'; ?>>7:15am</option>
<option value="7:30:00"<?php if ($selectedStart == '7:30:00') echo ' selected="selected"'; ?>>7:30am</option>
<option value="7:45:00"<?php if ($selectedStart == '7:45:00') echo ' selected="selected"'; ?>>7:45am</option>
<option value="8:00:00"<?php if ($selectedStart == '8:00:00') echo ' selected="selected"'; ?>>8:00am</option>
等...
我需要在早上7点到晚上10点之间发生这种情况。因此,当这个表单加载时,它会使用所有可用时间构建两个下拉列表,但是使用数据库中返回的值。我手动输入这些值但是想出if语句不需要为这两个下拉列表运行100次,然后尝试了for循环但遇到了添加15,3次增量然后再添加1的问题第一个数字等我过去用jquery做过这个,但这需要一个php解决方案。
答案 0 :(得分:2)
$selectedStart = '07:00:00';
$start = new DateTime('7am');
$end = new DateTime('10:15pm');
$interval = new DateInterval('PT15M');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $dt) {
?>
<option value="<?php echo $dt->format("H:i:s"); ?>"<?php if ($selectedStart == $dt->format("h:i:s")) echo ' selected="selected"'; ?>><?php echo $dt->format("g:ia"); ?></option>
<?php
}
这样做会将开始时间和结束时间创建为DateTime个对象。结束时间需要一个周期间隔(即15分钟),因为PHP在最后一个间隔停止并且不认为它是循环的一部分。然后它创建一个15分钟的interval并使用它来创建一个DatePeriod对象。然后循环遍历每个日期时段并在<option>
中回显它。
答案 1 :(得分:1)
我会这样做..
<select name="selection"><?php
$menu = array("-Enter T-Shirt Size-", "Small", "Medium", "Large", "X-Large", "Do not want a t-shirt");
$count = count($menu);
for($i = 0; $i < $count; $i++)
{
?><option><?php if (isset($menu[$i])){ echo $menu[$i]; }?></option><?php
}
?>
<option><?php if (isset($_POST['selection'])){ echo $menu[1]=($_POST['selection']); }?></option>
</select>
举个例子,您必须将其更改为您想要的任何信息..