确定是否选择了其他<option>,或者是否提交了默认值“ Select one ...”(带有空白值)

Bob*_*Bob 3 php forms isset option

我在搜索页面上添加了一个“按选项排序”。我正在使用两种选择形式输入类型,一种用于订购字段,一种用于ASC / DESC。我有第一个选项,值=“”和文本“ 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>
Run Code Online (Sandbox Code Playgroud)

提交表单后,我检查是否isset($ _ POST ['sort'])。设置好了。我也检查!empty。它总是空的。我想知道用户是否实际进行了选择。有没有一种方法可以进行设置,这样我就不必检查单个数组的值,即isset($ _ POST ['sort'] ['order_by_field'])?我希望将来可以按字段动态添加/删除可移动数量。

我想我可以使用optiongrp标签,但是那不是语义标记吗?我想虽然可以。

从更广泛的角度来看,将“选择一个...”放置在表单下拉列表中是一种好习惯吗?

Sha*_*ngh 5

选择字段将始终设置为 $_POST

你应该检查

if ($_POST['sort_by']['field_name'] !='')
Run Code Online (Sandbox Code Playgroud)

要么

if ($_POST['sort_by']['field_name'] != null)
Run Code Online (Sandbox Code Playgroud)

这始终是在使用变量之前检查变量的好习惯。

放置“选择一个...”是一种很好的做法,这样做也不错。