Определение, был ли выбран другой <option>, или было ли отправлено значение «Выбрать один ...» с пустым значением по умолчанию - PullRequest
2 голосов
/ 13 апреля 2011

Я добавляю опцию сортировки на страницу поиска.Я использую два типа ввода формы выбора, один для поля для заказа, а другой для ASC / DESC.У меня есть первый вариант со значением = "" и текстом "Выберите один ...".

<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 Ответ

4 голосов
/ 13 апреля 2011

Поле выбора всегда будет установлено в $_POST

вы должны проверить по

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

OR

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

и всегда рекомендуется проверять переменные перед их использованием.

ставить «Выбрать один ...» - это хорошая практика, ничего плохого в этом нет.

...