确定是否选择了其他<option>,或者是否提交了带有空白值的默认“选择一个...”</option>

时间:2011-04-13 16:43:15

标签: php forms option isset

我在搜索页面中添加了一个按选项排序。我使用两个选择表单输入类型,一个用于按顺序排列的字段,另一个用于ASC / DESC。我有第一个选项value =“”和text“Select one ...”。

<label for="sort[order_by_field]">Field</label><select name="sort[order_by_field]" id="combobox">
    <option value="">Select one...</option>
    <optgroup label="---">
        <option value="finding_incident_number"<?php echo ($field == 'finding_incident_number' ? ' selected="selected"': false); ?>>Incident #</option>
        <option value="finding_violation_type"<?php echo ($field == 'finding_violation_type' ? ' selected="selected"': false); ?>>Finding</option>

<label for="sort[order_by_direction]">Direction</label>
    <select name="sort[order_by_direction]">
    <option>Select one...</option>
    <option value="ASC"<?php echo ($dir == 'ASC' ? ' selected="selected"': false); ?>>Ascending</option>
    <option value="DESC"<?php echo ($dir == 'DESC' ? ' selected="selected"': false); ?>>Descending</option>
    </select>

提交表单后,我检查是否isset($ _ POST ['sort'])。它已经确定。我也检查!空。它永远是空的。我想知道用户是否真的做了选择。有没有办法设置它,以便我不必检查单个数组值,即isset($ _ POST ['sort'] ['order_by_field'])?我希望将来可以按字段添加动态数量的可添加/可移动排序。

我想我可以使用一个optiongrp标签,但那不会是语义标记吗?我想它会起作用。

从更广泛的角度来看,将“选择一个......”作为表单下拉列表的一个好习惯?

1 个答案:

答案 0 :(得分:4)

总是会在$_POST

中设置选择字段

你应该检查

if ($_POST['sort_by']['field_name'] !='')

OR

if ($_POST['sort_by']['field_name'] != null)

在使用它们之前检查变量总是一个很好的做法。

把“选择一个......”放在一起是个不错的做法。