我的表单中有两个复选框:
<div class="label-input-wrapper pickup">
<div class="form-label">I need Airport pick-up</div>
<div class="form-input">
<input type="checkbox" name="pick_up" value="Yes" />Yes
<input type="checkbox" name="pick_up" value="No" />No
<div class="error-msg">
<?php if(isset($errors['pick_up_no'])) { echo '<span style="color: red">'.$errors['pick_up_no'].'</span>'; } ?>
</div>
</div>
</div>
保存上述复选框值的变量:$pickup = $_POST['pick_up'];
验证:
//Check the airport pickup and make sure that it isn't a blank/empty string.
if ($pickup == ""){
//Blank string, add error to $errors array.
$errors['pick_up_no'] = "Please let us know your airport pick up requirement!";
}
if (($pick_up = Yes) && ($pick_up = No)) {
//if both selected, add error to $errors array.
$errors['pick_up_no'] = "Can not select Yes and No together!";
}
但如果两者都未选择,或者仅选择一个,甚至两者都选择,则上述验证仅打印Can not select Yes and No together!
。它为所有选择提供相同的错误消息。为什么?
您现在使用单个=
符号进行赋值,而不是将==
与进行比较
if (($pick_up = Yes) && ($pick_up = No))
你需要把它改成
if (($pick_up == "Yes") && ($pick_up == "No")){...}
同时将CCD_ 5和CCD_。
编辑:
IMHO,你最好使用单选按钮。
不应使用同时为用户提供"是"answers"否"选项的复选框;这令人困惑。
它应该是Yes
或No
,而不是和。
<input type="radio" name="pick_up" value="Yes" />Yes
<input type="radio" name="pick_up" value="No" />No
这是最可行的解决方案。
我不知道为什么你需要一个复选框(这是单选按钮应该做的),但你可以这样做:
if(!isset($_POST['pick_up']) || count($_POST['pick_up']) > 1) {
echo 'please select at least 1 choice';
} else {
echo $_POST['pick_up'][0];
}
然后让你的复选框名称:
name="pick_up[]"
或者,如果您确实需要单独的错误消息。这样做:
$errors['pick_up_no'] = '';
if(!isset($_POST['pick_up'])) {
$errors['pick_up_no'] = "Please let us know your airport pick up requirement!";
} elseif(count($_POST['pick_up']) > 1) {
$errors['pick_up_no'] = "Can not select Yes and No together!"; // weird UX, should have prevented this with a radio button
}
if($errors['pick_up_no'] != '') {
echo $errors['pick_up_no'];
} else {
echo $_POST['pick_up'][0];
}
$_POST['pick_up']不可能同时为yes和no,因为名称是pick_up而不是pick_up=]<-指向多个变量。因此,无论哪种方式,它都将是yes或no,因为一个参数将覆盖另一个参数。在这种情况下,您必须使用javascript来验证在提交之前只检查了一个。
使用复选框字段元素数组;
<input type="checkbox" name="pick_up[]" />Yes
<input type="checkbox" name="pick_up[]" />No
然后在您的PHP脚本中:
<?php
$pick_ups=$_POST['pick_up'];
$first=isset($pick_ups[0]); //true/false of first checkbox status
$second=isset($pick_ups[1]); //true/false of second checkbox status
?>
同样,正如你已经被告知的那样,你应该使用单选按钮来达到这个目的!如果未设置$_POST不发送复选框,请考虑该复选框(使用isset($_POST['name'])进行检查