Как проверить, если выбрано более одного поля выбора - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть четыре поля выбора в форме. Пользователь должен выбрать значение только из одного поля выбора, и не имеет значения, какой из четырех. Учитывая тот факт, что я не могу использовать JS (было бы проще) и что каждое поле выбора имеет свое имя, как я могу проверить, выбран ли только один из них?

Например, если выбран только один, это нормально. Но если выбрано более одного, я хочу отобразить ошибку.

Я думаю о том, чтобы написать пару операторов if (), но на самом деле я ищу более элегантное решение.

Я использую PHP.

Вот пример формы:

<select name="hr_id">
    <option value="1">...</option>
</select>

<select name="pr_id">
    <option value="1">...</option>
</select>

<select name="dev_id">
    <option value="1">...</option>
</select>

<select name="sales_id">
    <option value="1">...</option>
</select>

Ответы [ 2 ]

3 голосов
/ 29 ноября 2011
if(($_POST['hr_id']+$_POST['pr_id']+$_POST['dev_id']+$_POST['sales_id'])!=1) {
 $error=true;
}

РЕДАКТИРОВАТЬ: я полагаю, это не совсем гибко. Вы также можете сделать что-то вроде:

$fields = array('hr_id','pr_id','dev_id','sales_id');
$i=0;
foreach($fields as $k->$v) {
    $i = ($_POST[$v]!="" ? ++$i : $i );
}
$error = ($i == 1 ? false : true);
0 голосов
/ 29 ноября 2011

Почему бы не использовать радио-кнопки, которые имеют эту функцию по умолчанию?

<input type="radio" name="preference" value="red" /> Red<br/>
<input type="radio" name="preference" value="blue" /> Blue<br/>
<input type="radio" name="preference" value="green" /> Green<br/>
<input type="radio" name="preference" value="yellow" /> Yellow<br/>

When submitted

$preference = $_GET['preference']; //cleaning omitted
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...