如何在两个字段答案均为“0”时显示错误


how to have an error show up upon both field answers being '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>'); ?>

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

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

如果未定义$femaleErr,则此代码将永远不会运行,因为它未设置。(我没有看到它在您的示例中设置在哪里(。

但可能您遇到问题的原因是 ||。 print()需要一个字符串。您的逻辑操作无效,如果正确执行,它将输出 1 或 0(真或假(,而不是设置的变量:print('stuff'. ($varone || $vartwo) .'otherstuff') // prints 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 if(isset($femaleErr)) print ('<span class="error">* ' . $femaleErr || $quantityErr . '</span>'); ?>

在这里,仅当设置了$femaleErr时,才显示$quantityErr。所以它不会被显示。

例如,您可以将其添加为带有自己的 if check 的单独行

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