Php 条件逻辑形式验证
我在为脚本编写逻辑时遇到了一些问题。我似乎不能把我的头围绕着它 我有一个包含6个数量字段的表单,每个数量字段有两个对应的复选框 数量字段在变量Php 条件逻辑形式验证,php,forms,validation,logic,conditional,Php,Forms,Validation,Logic,Conditional,我在为脚本编写逻辑时遇到了一些问题。我似乎不能把我的头围绕着它 我有一个包含6个数量字段的表单,每个数量字段有两个对应的复选框 数量字段在变量$q1、$q2、$q3、$q4、$q5、$q6中引用。 变量$c1\u 1、$c1\u 2、$c2\u 1、$c2\u 2中引用了复选框。。。等等 我想要实现的逻辑是,如果在数量字段中输入一个数字,则必须同时选中两个相应复选框中的一个,否则表单将无效 我当前的代码如下所示: if( ($q1 !== "" && ($c1_1 == "
$q1、$q2、$q3、$q4、$q5、$q6
中引用。
变量$c1\u 1、$c1\u 2、$c2\u 1、$c2\u 2
中引用了复选框。。。等等
我想要实现的逻辑是,如果在数量字段中输入一个数字,则必须同时选中两个相应复选框中的一个,否则表单将无效
我当前的代码如下所示:
if(
($q1 !== "" && ($c1_1 == "" || $c1_2 == "")) ||
($q2 !== "" && ($c2_1 == "" || $c2_2 == "")) ||
($q3 !== "" && ($c3_1 == "" || $c3_2 == "")) ||
($q4 !== "" && ($c4_1 == "" || $c4_2 == "")) ||
($q5 !== "" && ($c5_1 == "" || $c5_2 == "")) ||
($q6 !== "" && ($c6_1 == "" || $c6_2 == ""))
) {
$is_valid = false;
} else {
$is_valid = true;
}
该代码的错误在于,当我去测试该脚本时,它需要选中两个复选框以进行验证。如果我理解正确,如果满足以下条件之一,您希望使其无效:
- 一个字段是空的
- 两个复选框(属于某个字段)均未选中
if(
($q1 !== "" && ($c1_1 == "" && $c1_2 == "")) ||
($q2 !== "" && ($c2_1 == "" && $c2_2 == "")) ||
($q3 !== "" && ($c3_1 == "" && $c3_2 == "")) ||
($q4 !== "" && ($c4_1 == "" && $c4_2 == "")) ||
($q5 !== "" && ($c5_1 == "" && $c5_2 == "")) ||
($q6 !== "" && ($c6_1 == "" && $c6_2 == ""))
) {
$is_valid = false;
} else {
$is_valid = true;
}
带或不带内螺纹()
我自己还没试过,但应该可以用。在提交答案之前,我只是试了几件事。我写了一个表单来复制与你类似的东西
<form action="tester.php" method="POST">
<input type="text" name="q1"/><br>
<input type="checkbox" name="c1_1" value="Bike">check1<br>
<input type="checkbox" name="c1_2" value="Car">check2<br><br>
<input type="text" name="q2"/><br>
<input type="checkbox" name="c2_1" value="Bike">check1<br>
<input type="checkbox" name="c2_2" value="Car">check2<br><br>
<input type="text" name="q3"/><br>
<input type="checkbox" name="c3_1" value="Bike">check1<br>
<input type="checkbox" name="c3_2" value="Car">check2<br><br>
<input type="text" name="q4"/><br>
<input type="checkbox" name="c4_1" value="Bike">check1<br>
<input type="checkbox" name="c4_2" value="Car">check2<br><br>
<input type="text" name="q5"/><br>
<input type="checkbox" name="c5_1" value="Bike">check1<br>
<input type="checkbox" name="c5_2" value="Car">check2<br><br>
<input type="text" name="q6"/><br>
<input type="checkbox" name="c6_1" value="Bike">check1<br>
<input type="checkbox" name="c6_2" value="Car">check2<br><br>
<input type="submit" name="submit" value="submit"/>
</form>
也许我晚了一点,但问题似乎出在&
上。另外,也许最好使用isset
函数,这只是我的意见
if(isset($_POST['submit']))
{
$q1 = $_POST['q1'];
$q2 = $_POST['q2'];
$q3 = $_POST['q3'];
$q4 = $_POST['q4'];
$q5 = $_POST['q5'];
$q6 = $_POST['q6'];
if(
($q1 !== "" && (!isset($_POST['c1_1']) && !isset($_POST['c1_2']))) ||
($q2 !== "" && (!isset($_POST['c2_1']) && !isset($_POST['c2_2']))) ||
($q3 !== "" && (!isset($_POST['c3_1']) && !isset($_POST['c3_2']))) ||
($q4 !== "" && (!isset($_POST['c4_1']) && !isset($_POST['c4_2']))) ||
($q5 !== "" && (!isset($_POST['c5_1']) && !isset($_POST['c5_2']))) ||
($q6 !== "" && (!isset($_POST['c6_1']) && !isset($_POST['c6_2'])))
)
{
echo 'false';
} else
{
echo 'true';
}
}