PHP / HTML检查select是否已包含特定值

时间:2011-09-28 16:23:37

标签: php html select option

我正在努力重新设计一个设计欠佳的系统,并遇到了以下问题。 我有一个时间字段,用户可以在其中选择事件的小时,分​​钟和时区。这些都是通过HTML选择下拉菜单完成的,该菜单包含多个不同选项。我的前任认为有必要让人们选择一个确切的分钟,而在我的特定应用程序中,15分钟的增量就足够了(更不用说让用户可以更容易地浏览列表一百万次了)。

我遇到的问题是,如果创建的事件发生在先前的1:17 PM,但是17不再在我的分钟下拉菜单中它将显示默认的--select--选项。但我希望在这些情况下,17出现在菜单中并被选为默认值。我的问题是我不知道如何确切地检查我的分钟值是否已经存在于列表中,然后如果不存在则添加它。我想我可以与我的下拉选项并行创建一个PHP数组,但我希望能够直接查看选项列表并确定该值是否已经存在,如果是这样的话,请继续,如果不是,请添加它到最后。有没有办法从PHP中的HTML对象获取此类信息?

5 个答案:

答案 0 :(得分:1)

不,您无法从PHP访问此信息。您唯一能做的就是缓冲您发送的html,然后使用DOM访问下拉列表。但我建议你使用php数组,就像你提到的那样,并从中创建下拉列表。

$values = array(0,15,30,45);
if(!in_array($values, $minute)) {
    $values[] = $minute;
}

// Generate select box..
[...]

答案 1 :(得分:0)

如果值可以被15整除(假设您在新列表中使用分钟0,15,30和45),则可以使用模数(%)计算出来,例如。

if($value !== 0 && $value % 15 !== 0) { // add it to the list }

答案 2 :(得分:0)

不,如果没有使用PHP解析器解析HTML并获取值,那么事先没有好的方法可以知道。对此最好的解决方案是在下拉列表中包含一个带有值的数组,并检查该数组。

或者,我建议为用户之前的选择选择最接近的新可能值。你可以这样得到它:

round($minute, 15) * 15; //14 will give 15, 35 will give 30, etc

答案 3 :(得分:0)

为什么不创建整个对象(选择/选项)并将其从您拥有的网页中删除?你还有HTML页面。您只是不要提前为选择/选项添加HTML。您在PHP中构建它并将其放在页面上。

使用PHP来决定需要在Option中的值。

答案 4 :(得分:0)

PHP在HTML渲染期间运行,如果您希望使用PHP更改<select>,则必须在显示列表之前完成渲染。您最好的解决方案是创建一个数组并在其中添加自定义值。

define('DEFAULT_SELECT', array(0, 15, 30, 45));
...
$select_options = DEFAULT_SELECT;
if (!in_array($new_option, $select_options)) { array_push($new_option, $select_options)); }