【问题标题】:PHP Form - Text Box or Dropdown List RequiredPHP 表单 - 需要文本框或下拉列表
【发布时间】:2015-09-11 18:20:00
【问题描述】:

我想知道是否有人可以帮助我解决这个问题。我有一个带有两个必填字段的 php 联系表。用户需要填写文本字段,或者从下拉列表中选择一个选项。需要填写一个或其中之一。这是我所拥有的:

    // previous requisition number
if(trim($_REQUEST['prevReqNum']) === '')  {
    $prevReqNumError = '<span class="error">Please enter your previous requisition number.</span>';
    $hasError = true;
} else if (!preg_match("/^([1]-)?[a-z0-9]{6}$/i", trim($_REQUEST['prevReqNum']))) {
    $prevReqNumError = '<span class="error">You entered an invalid requisition number.</span>';
    $hasError = true;

// assigned engineer
} else if(empty($_POST['engineer'])) {
$engineerError = '<span class="error">Please select the engineer that you were working with.</span>';
$hasError = true; }
else{
$engineer = $_POST['engineer'];
}

这里是 HTML:

         <p><label for="prevReqNum">*Previous Requisition Number:&nbsp;</label><input type="text" size="40" name="prevReqNum" id="prevReqNum" value="<?php if(isset($_POST['prevReqNum'])) echo $_POST['prevReqNum'];?>" placeholder=" eg. 000000" /> <?php if($prevReqNumError != '') { ?><span class="error"><?=$prevReqNumError;?></span><?php } ?>
             or <label for="engineer">Assigned Engineer: </label><select name='engineer' id="engineer" size="1">
              <option value="" selected="selected">Select</option>
              <option <?php echo $engineer=='Dexter'?'selected':''; ?> >Dexter</option>
              <option <?php echo $engineer=='Jake'?'selected':''; ?> >Jake</option>
              <option <?php echo $engineer=='Mo'?'selected':''; ?> >Mo</option>
              <option <?php echo $engineer=='Richard'?'selected':''; ?> >Richard</option>
            </select> <?php if($engineerError != '') { ?><span class="error"><?=$engineerError;?></span><?php } ?></p>  

因此,用户要么填写申请编号,要么选择与他们合作的工程师。我得到了申请号文本字段的工作。因此,当我将其留空时,我会收到一条错误消息。但是当我未选择工程师下拉菜单时,我没有收到任何错误消息。请原谅我不是程序员,所以我不确定这里有什么问题。谢谢!

【问题讨论】:

  • HTML 在
    标签内,但上面的 PHP 在 标签内。它们在同一个 php 页面内但分开。

标签: php html drop-down-menu


【解决方案1】:

您应该能够将其添加到您的 PHP 中。看起来您只需要检查一个工程师和一个 prevReqNum,如果它们都不存在,则返回一条错误消息。这只是在其他验证之后。

if (empty($_POST['engineer']) && trim($_REQUEST['prevReqNum']) === '') {
    $prevReqNumError = '<span class="error">Please choose an engineer or enter a requisition number.</span>';
    $hasError = true;
}

【讨论】:

    【解决方案2】:

    下面将整理出潜在的错误。要么都是空的,要么都不是。

    <?php
    $reqNumber=trim($_POST['prevReqNum']);
    $engineer=$_POST['engineer'];
    if(empty($reqNumber) && empty($engineer)){
    $prevReqNumError = '<span class="error">Please enter your previous requisition number or select an engineer.</span>';
    $hasError = true;
    }
    else{
    if(!empty($reqNumber))  {
    if (!preg_match("/^([1]-)?[a-z0-9]{6}$/i", $reqNumber)) {
    $prevReqNumError = '<span class="error">You entered an invalid requisition number.</span>';
    $hasError = true;
    }
    else{
      if(empty($_POST['engineer'])){
        $engineerError = '<span class="error">Please select the engineer that you were working with.</span>';
        $hasError = true;
      }  
      }
    }
    }
    ?>
    

    【讨论】:

      【解决方案3】:

      主要问题是逻辑的布局。仔细看,你有:

      if
      else if
      else if
      else
      

      一旦 PHP 匹配了“if”,其他测试将被跳过。

      您需要 if/else 用于先前的请求编号,而另一个 if/else 用于分配的工程师,因为如果其中一个错误,您想抛出错误。

      【讨论】:

        【解决方案4】:

        我试图提供帮助。它会有所帮助。

        Add Form "action" and "onsubmit" in <form></form> tag.
        
        <form method="POST" action="Give Here" onsubmit="return CheckValidation()">
        <p>
            <label for="prevReqNum">*Previous Requisition Number:&nbsp;</label>
            <input type="text" size="40" name="prevReqNum" id="prevReqNum" value="<?php if(isset($_POST['prevReqNum'])) echo $_POST['prevReqNum'];?>" placeholder=" eg. 000000" />
            <span class="error InvalidRegdNo" style="display:none;">You entered an invalid requisition number.</span>
            <span class="error EmptyRegdNo" style="display:none;">Please enter your previous requisition number.</span>             
            OR <label for="engineer">Assigned Engineer: </label>
            <select name='engineer' id="engineer" size="1">
                <option value="" selected="selected">Select</option>
                <option <?php echo $engineer=='Dexter'?'selected':''; ?> >Dexter</option>
                <option <?php echo $engineer=='Jake'?'selected':''; ?> >Jake</option>
                <option <?php echo $engineer=='Mo'?'selected':''; ?> >Mo</option>
                <option <?php echo $engineer=='Richard'?'selected':''; ?> >Richard</option>
            </select>
            <span class="error SelectEngineer" style="display:none;">Please select the engineer that you were working with.</span>
            <span class="error SelectAtleastOne" style="display:none;">Please select atleast engineer or type registration no.</span>
        </p>
        
        </form>
        
        <script>
            function CheckValidation()
            {
                var RegNo=$('#prevReqNum').val();
                var Engineer=$('#engineer').val();
        
                /*First Check Valid Registration Number*/
                if (!preg_match("/^([1]-)?[a-z0-9]{6}$/i", trim(RegNo)))
                {
                    $('.InvalidRegdNo').show();
                    return false;
                }
                if(RegNo=="" && Engineer=="")
                {
                    $('.SelectAtleastOne').show();
                    return false;
                }
            }
        </script>
        

        【讨论】:

        • 感谢大家的帮助和回复!你一直很有帮助! :-)
        猜你喜欢
        • 1970-01-01
        • 2017-10-19
        • 2013-11-12
        • 2011-06-09
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多