php – 如何在两个字段答案为’0’时显示错误
我试图弄清楚,如果用户在两个字段中选择“0”,则会弹出一个错误,并说其中至少有一个必须填写数量.
如下所示:表单字段有一个与之关联的错误,即$maleErr或$femaleErr … 我写了这样的东西: if (($_POST["male"] === "") && ($_POST["female"] === "")) { $quantityErr = "Please fill at least one of the fields,either male or female." } 并将$quantityErr添加到这样的表单字段:(它不适用于它的价值.页面只是空白. <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(true或false)而不是设置的变量: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的有效输入(只需要是一个数组). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |