我试图弄清楚,如果用户在两个字段中都选择了“0”,则会弹出错误消息并说明至少其中一个字段必须填写数量。
正如您在下面看到的:表单字段有一个与之关联的错误,即 $maleErr
或 $femaleErr
...
我是这样写的:
if (($_POST["male"] === "") && ($_POST["female"] === "")) {
$quantityErr = "Please fill at least one of the fields, either male or female."
然后将 $quantityErr
添加到表单字段中,如下所示:(它的值(value)不起作用。页面只是空白。
<div class="field">
<label>* Number of People</label>
<select class="ui dropdown" name="female">
<option value="">Gender Female</option>
<option <?php if ($female === 0 ) echo 'selected' ; ?> value="0">0</option>
<option <?php if ($female == 1 ) echo 'selected' ; ?> value="1">1</option>
<option <?php if ($female == 2 ) echo 'selected' ; ?> value="2">2</option>
<option <?php if ($female == 3 ) echo 'selected' ; ?> value="3">3</option>
<option <?php if ($female == 4 ) echo 'selected' ; ?> value="4">4</option>
<option <?php if ($female == 5 ) echo 'selected' ; ?> value="5">5</option>
<option <?php if ($female == 6 ) echo 'selected' ; ?> value="6">6</option>
<option <?php if ($female == 7 ) echo 'selected' ; ?> value="7">7</option>
<option <?php if ($female == 8 ) echo 'selected' ; ?> value="8">8</option>
<option <?php if ($female == 9 ) echo 'selected' ; ?> value="9">9</option>
<option <?php if ($female == 10 ) echo 'selected' ; ?> value="10">10</option>
</select>
<?php if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr || $quantityErr . '</span>'); ?>
</div>
没有如上所述修改的当前表单字段
<div class="field">
<label>* Number of People</label>
<select class="ui dropdown" name="male">
<option value="">Gender Male</option>
<option <?php if ($male === 0 ) echo 'selected' ; ?> value="0">0</option>
<option <?php if ($male == 1 ) echo 'selected' ; ?> value="1">1</option>
<option <?php if ($male == 2 ) echo 'selected' ; ?> value="2">2</option>
<option <?php if ($male == 3 ) echo 'selected' ; ?> value="3">3</option>
<option <?php if ($male == 4 ) echo 'selected' ; ?> value="4">4</option>
<option <?php if ($male == 5 ) echo 'selected' ; ?> value="5">5</option>
<option <?php if ($male == 6 ) echo 'selected' ; ?> value="6">6</option>
<option <?php if ($male == 7 ) echo 'selected' ; ?> value="7">7</option>
<option <?php if ($male == 8 ) echo 'selected' ; ?> value="8">8</option>
<option <?php if ($male == 9 ) echo 'selected' ; ?> value="9">9</option>
<option <?php if ($male == 10 ) echo 'selected' ; ?> value="10">10</option>
</select>
<?php if(isset($maleErr)) print ('<span class="error">* ' . $maleErr . '</span>'); ?>
</div>
<div class="field">
<label>* Number of People</label>
<select class="ui dropdown" name="female">
<option value="">Gender Female</option>
<option <?php if ($female === 0 ) echo 'selected' ; ?> value="0">0</option>
<option <?php if ($female == 1 ) echo 'selected' ; ?> value="1">1</option>
<option <?php if ($female == 2 ) echo 'selected' ; ?> value="2">2</option>
<option <?php if ($female == 3 ) echo 'selected' ; ?> value="3">3</option>
<option <?php if ($female == 4 ) echo 'selected' ; ?> value="4">4</option>
<option <?php if ($female == 5 ) echo 'selected' ; ?> value="5">5</option>
<option <?php if ($female == 6 ) echo 'selected' ; ?> value="6">6</option>
<option <?php if ($female == 7 ) echo 'selected' ; ?> value="7">7</option>
<option <?php if ($female == 8 ) echo 'selected' ; ?> value="8">8</option>
<option <?php if ($female == 9 ) echo 'selected' ; ?> value="9">9</option>
<option <?php if ($female == 10 ) echo 'selected' ; ?> value="10">10</option>
</select>
<?php if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr . '</span>'); ?>
</div>
当前错误检查没有修改如上所述
if ($_POST["male"] === "") {
$maleErr = "# of people (gender male) required";
} else {
$male = test_input($_POST["male"]);
}
if ($_POST["female"] === "") {
$femaleErr = "# of people (gender female) required";
} else {
$female = test_input($_POST["female"]);
}
额外编辑
可以改用它吗?因为每次我尝试提交表单时,不幸的是它提交了而不是弹出错误。
if (($_POST["male"] == 0) && ($_POST["female"] == 0)) {
$quantityErr = "Please fill at least one of the fields, either male or female.";
}
这就是字段的内容:(女性和男性都相同)
<?php if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr . '</span>'); ?>
<?php if(isset($quantityErr)) print ('<span class="error">* ' . $quantityErr . '</span>'); ?>
最佳答案
首先,您应该打开错误报告或调查您的错误日志文件(如果已打开)。我这样说是因为您描述的白页是解析错误的结果。您忘记在此处的 isset 上将 $femaleErr
更改为 $quantityErr
:
<?php if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr || $quantityErr . '</span>'); ?>
如果 $femaleErr
未定义,则此代码将永远不会运行,因为它未设置。 (我看不到它在您的示例中设置的位置)。
但您遇到问题的原因很可能是 ||。 print()
需要一个字符串。您的逻辑运算无效,如果正确完成,它将输出 1 或 0(真或假)而不是设置的变量:print('stuff'. ($varone || $vartwo) .'otherstuff')//打印 stuff1otherstuff
。
所以改为尝试:
$msg = array();
if( isset($femaleErr) )
$msg[] = $femaleErr;
if( isset($quantityErr ) )
$msg[] = $quantityErr ;
foreach($msg as $msg)
{
echo '<span class="error">* '.$msg.'</span>';
}
这将检查每个变量,查看它们是否已设置,如果已设置,它将把它添加到消息数组中。然后 foreach 将遍历数组并打印出相应的消息。如果数组为空,则什么都不做。空数组是 foreach 的有效输入(只需要是一个数组)。
关于php - 如何在两个字段答案上都显示错误 '0',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33290680/