我在搜索页面中添加了一个按选项排序。我使用两个选择表单输入类型,一个用于按顺序排列的字段,另一个用于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标签,但那不会是语义标记吗?我想它会起作用。
从更广泛的角度来看,将“选择一个......”作为表单下拉列表的一个好习惯?
答案 0 :(得分:4)
总是会在$_POST
你应该检查
if ($_POST['sort_by']['field_name'] !='')
OR
if ($_POST['sort_by']['field_name'] != null)
在使用它们之前检查变量总是一个很好的做法。
把“选择一个......”放在一起是个不错的做法。