首页 > 解决方案 > 如何在 PHP 中验证空且正确的选择选项

问题描述

使用以下代码验证选项的选择和正确选择,我在验证 PHP 中的元素时遇到问题:

  1. 如果我没有选择任何东西(使用默认 novalue 选项),我会收到错误消息
  2. 即使我选择另一个选项,除了$select未加载到之外,我再次收到未选择的错误消息$_POST['select']

我怎样才能解决这个问题?

<?php
$select = "novalue";
$select_err = "";

if($select == "test"){
       $select_err = "Please select an option.";
} else{
       $select = $_POST['select'];
}
?>

<html>
   <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
     <div class="form-group <?php echo (!empty($select_err)) ? 'has-error' : ''; ?>">
       <label>Select Option</label>
       <select class="custom-select" id="inputGroupSelect01">
         <option value="novalue" <?php ($select == 'test')? 'selected' :''; ?>>Choose...</option>
         <option value="Goa" <?php ($select == '1')? 'selected' :''; ?> >Goa</option>
         <option value="Kashmir" <?php ($select== "2")? "selected":""; ?> >Kashmir</option>
         <option value="Rajasthan" <?php ($select == "3")? "selected":""; ?> >Rajasthan</option>
       </select>
       <span class="help-block"><?php echo $select_err; ?></span>
     </div>

     <div class="form-group">
        <input type="submit" class="btn btn-primary" value="Login" name="submit">
     </div>
   </form>

</html>

标签: php

解决方案


您的标签中缺少 name="select"。表单仅提交具有名称集的元素。

此外,您不会在第一行中使用 POST 值。改成:

if(isset($_POST['submit'])) {
    
    $select = $_POST['select'];
    $select_err = "";
    
    if(empty($select)){
           $select_err = "Please select an option.";
    } else{
        // here do stuff with the value...

    }
}

然后应该修复只有在根本没有帖子时才显示表单的问题。如果有 postdata,您应该对其进行处理并显示响应。


推荐阅读