2011-11-29 106 views
0

我在表单中有四个选择框。用户只能从一个选择框中选择一个值,四个中的哪一个并不重要。鉴于我不能使用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> 
+0

为什么不使用默认具有此功能的单选按钮? – meouw

+0

检查名称属性:name =“selected []”,或者更好,因为你会使用单选按钮! – Drewdin

+0

因为对于每个选择框我有不同类型的信息。 @Drewdin:我说我不能使用JS。 – Psyche

回答

3
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

这看起来不对。如果我从值为“125”的“sales_id”中选择一个项目,该怎么办? :) – Psyche

+0

我刚刚开始的样品。所有的值都是1,在这种情况下它会起作用,在你的“125”情况下它不会。 – jfable

+0

谢谢jfable,但不幸的是并不是所有的值都是“1”。 – Psyche

0

为什么不使用它在默认情况下此功能单选按钮?

<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 
+0

因为单选按钮不符合要求。 – Psyche

+0

好的,祝你好运:) – meouw