如何根据用户输入对选择选项进行排序


How to sort a select option according to user input

我不知道如何实现这一点,所以我需要帮助。我有这个代码:

<select>
    <option>Sunday</option>
    <option>Monday</option>
    /* this option goes down to Saturday */
</select>

用户必须选择一个插入数据库的选项,让我们假设用户选择星期二,并希望稍后对其进行编辑。现在我希望该选项将在星期二可见,例如:

<select>
    <option>Sunday</option>
    <option>Monday</option>
   <option>Tuesday</option> /* this option will be the visible option before the user opens the selection */
</select>

我想通过PHP实现这一点,并且分配给输出的数据库信息的变量是$day,所以$day = 'Tuesday';,请问我该如何实现?

要在PHP中做到这一点,可以执行

<select>
    <option <?PHP echo $day=='Sunday' ? '"selected=selected"' : ''); ?>>Sunday</option> 
    <option <?PHP echo $day=='Monday' ? '"selected=selected"' : ''); ?>>Monday</option> 
    <option <?PHP echo $day=='Tuesday' ? '"selected=selected"' : ''); ?>>Tuesday</option> 
...
</select>

但它不是很优雅,而且很难编码,更重要的是,如果选择的内容超过了一周中的七天,则将保持

因此,使用一个日期名称数组和foreach循环以及包含用户选择的日期的$day变量。

<?php
$dow = array('Sunday','Monday','Tuesday','Wednesday',
             'Thursday','Friday','Saturday');
?>
<select name="DayOfWeek">
<?php
    foreach ( $dow as $d ) :
        $sel = $d == $day ? 'selected="selected"' : '';
        echo "<option $sel>$d</option>";
    endforeach;
?>
</select>

你可以试试这个例子,你可以申请所有的选择选项

<select>
   <option <?PHP echo ($day=='Tuesday' ? selected : ""); ?>>Tuesday</option> 
</select>