php - 如何在两个字段答案上都显示错误 '0'

标签 php html forms

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

相关文章:

php - Magento 类别静态 block 仅不起作用

php - mysql php选择句子before after关键字

php - 尝试了几件事后,得到特殊字符的问号。我还能尝试什么?

css - 内容 div 水平居中且高度为 100% 的粘性页脚情况

javascript - 使用 Javascript 创建测验页面

php - Facebook OAuth 和 PHP SDK...错误

html - Bootstrap 3 水平对齐文本和 div 中间的跨度

html - 为什么列表项与其父项之间有空格分隔?

css - 表单在 Internet Explorer 中根本没有样式 - CSS 不显示

javascript - 无法读取未定义的属性 'Elements' - 在 JS 控制台中