在php中为下拉列表构建选项值的最佳方法

时间:2014-01-24 01:30:55

标签: php

我在表单上有一个下拉选择输入。我正在使用数据库中的先前值重新填充表单。

目前,下拉列表如下:$ 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解决方案。

2 个答案:

答案 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
}

See it in action

这样做会将开始时间和结束时间创建为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>

举个例子,您必须将其更改为您想要的任何信息..