Php 如何在两个字段答案均为';0';

Php 如何在两个字段答案均为';0';,php,html,forms,Php,Html,Forms,我试图弄清楚,如果用户在两个字段中都选择了“0”,则会弹出一个错误,并说其中至少有一个字段必须填写数量 如下所示:表单字段有一个相关错误,即,$maleErr或$femaleErr 我写了这样的东西: if (($_POST["male"] === "") && ($_POST["female"] === "")) { $quantityErr = "Please fill at least one of the fields, either male or femal

我试图弄清楚,如果用户在两个字段中都选择了“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>
附加编辑

这可以改为工作吗?因为每次我尝试提交表单时,不幸的是表单提交而不是出现错误

  if (($_POST["male"] == 0) && ($_POST["female"] == 0)) {
      $quantityErr = "Please fill at least one of the fields, either male or female.";
  }
这就是字段的含义:(女性和男性都相同)


首先,您应该打开错误报告或调查您的错误日志文件(如果该文件已打开)。我这样说是因为您描述的白页是解析错误的结果。您忘记将isset上的
$femaleErr
更改为
$quantityErr

<?php if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr || $quantityErr . '</span>'); ?>

这将检查每个变量,看看它们是否已设置,如果已设置,则会将其添加到消息数组中。然后foreach将在数组中迭代并打印出相应的消息。如果数组为空,则不会执行任何操作。空数组是foreach的有效输入(只需要是数组)

这听起来是正确的解决方案。但是当我现在尝试实现它时,空白页仍然存在。所以,我删除了我写的函数,页面出现了。我写函数的方式有什么不对?我不知道如何检查我的错误日志文件,更不用说知道它在哪里了。但是它似乎是空白页的来源。是我在上面的帖子中提到的函数。当它被删除时,页面出现了。你知道我的函数有什么问题吗?我不是故意的,但你必须找到并学习如何使用错误日志,它是程序员最好的朋友。如果你在一个典型的cPanel驱动的共享主机上,寻找一个文件“错误日志”"与此脚本位于同一目录中。此外,您的代码没有任何函数。如果您引用的是我引用的内容,很可能是因为您没有定义
$femaleErr
无需担心-您没有恶意。我将立即检查我的cPanel。但最上面有一个函数。请查看。谢谢。您链接的代码确实有没有。我正在修改上面的答案,以涵盖可能存在的问题。我刚刚意识到我误用了单词函数。抱歉。我是指顶部的第一个代码片段。
  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>'); ?>
  <?php if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr || $quantityErr . '</span>'); ?>
  <?php if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr . '</span>'); ?>
  <?php if(isset($quantityErr)) print ('<span class="error">* ' . $quantityErr . '</span>'); ?>
<?php if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr || $quantityErr . '</span>'); ?>
$msg = array();
if( isset($femaleErr) )
    $msg[] = $femaleErr;

if( isset($quantityErr ) )
    $msg[] = $quantityErr ;

foreach($msg as $msg)
{
   echo '<span class="error">* '.$msg.'</span>';
}