如何显示错误并不允许以PHP形式提交两个输入

时间:2018-10-29 19:00:17

标签: php html mysqli

我的一个表单中,我可以选择从选择框中进行选择,也可以手动输入信息。

我想防止用户同时输入两者。他们应该从选择中进行选择,或者如果他们的选择尚不存在,则手动输入。

html代码

<div class="row">
                <div class="form-group col-sm-4">
                  <div class="row">
                    <div class="col-sm-3">
                        <label for="selectComplvl" class="regions" >Region</label></div>
                    <div class="col-sm-8">
                      <select class="form-control regionbox" id="region" value="" name="region">
                        <option>---Select---</option>
                        <?php
                          $region_sql = "SELECT * FROM `regions`";
                          $region_res = mysqli_query($con, $region_sql);
                          if(mysqli_num_rows($region_res) > 0){
                             while($region_row = mysqli_fetch_array($region_res)){
                                  echo "<option value='".$region_row[id]."'>".$region_row[region]."</option>";
                              } 
                          }

                        ?>

                      </select>
                      <div class="help-block with-errors"></div>
                    </div>
                  </div>
                </div>

                <div class="form-group col-sm-4">
                  <div class="row">
                    <div class="col-sm-4">
                        <label for="feisEntered" class="feis">Feis Entered</label></div>
                    <div class="col-sm-8">
                      <select class="form-control feisbox" id="feisEntered" name="feisEntered">
                        <option>First choose a Region</option>

                      </select>
                      <div class="help-block with-errors"></div>
                    </div>
                  </div>
                </div>

                <div class="form-group col-sm-4">
                  <div class="row">
                    <div class="col-sm-3">
                        <label for="feisEntered" class="enterfeis">Or Enter</label></div>
                    <div class="col-sm-8">
                      <input id="inputfeis" type="text" name="feisEntered" class="form-control" placeholder="Feis name - MM/DD/YYYY">
                      <div class="help-block with-errors"></div>
                    </div>
                  </div>
                </div>
            </div>

我的查询

if(isset($_POST['submit'])){  
    $dancer=$_POST['dancer'];
    $dancer = mysqli_real_escape_string($con,$dancer);
    $level=$_POST['level'];
    $level = mysqli_real_escape_string($con,$level);
    $feisEntered=$_POST['feisEntered'];
    $feisEntered = mysqli_real_escape_string($con,$feisEntered);
    $danceName=$_POST['danceName'];
    $danceName = mysqli_real_escape_string($con,$danceName);
    $compNum=$_POST['compNum'];
    $compNum = mysqli_real_escape_string($con,$compNum);
    $competitor = $_POST['competitor'];
    $competitor = mysqli_real_escape_string($con,$competitor);
    $danceScore = $_POST['danceScore'];
    $danceScore = mysqli_real_escape_string($con,$danceScore);
    $placement = $_POST['placement'];
    $placement = mysqli_real_escape_string($con,$placement);
    $firstScore = $_POST['firstScore'];
    $firstScore = mysqli_real_escape_string($con,$firstScore);
    $secondScore = $_POST['secondScore'];
    $secondScore = mysqli_real_escape_string($con,$secondScore);
    $thirdScore = $_POST['thirdScore'];
    $thirdScore = mysqli_real_escape_string($con,$thirdScore);
    $judge = $_POST['judge'];
    $judge = mysqli_real_escape_string($con,$judge);
    $comments = $_POST['comments'];
    $comments = mysqli_real_escape_string($con,$comments);


$query = "INSERT INTO reports (user_id, dancer_id1, dancer_name, competition_level1, feis_entered, dance_name1, competition_number1, number_competitors1, dancer_score1, dancer_placement1, firstpl_score1, 2ndpl_score1, 3rdpl_score1, judge_name1, judge_comment1) VALUES ('$id','$dancerID', '$dancer', '$level', '$feisEntered', '$danceName', '$compNum', '$competitor', '$danceScore', '$placement', '$firstScore', '$secondScore', '$thirdScore', '$judge', '$comments')";

     $result = mysqli_query($con, $query);
}

因此,如果他们都填写“请选择一个”,则会出现一条错误消息。这样,只有一个人进入数据库。

2 个答案:

答案 0 :(得分:0)

在HTML文档中,应在将表单提交给PHP脚本之前使用Javascript验证用户输入。然后,在PHP脚本中,您应仔细检查选择和输入是否都没有收到值(如果用户未启用Javascript或以某种方式绕过了验证,则可能会发生这种情况),然后确定要执行的操作在这种情况下,您可以这样做(选择一个,或者退出并出现错误)。

答案 1 :(得分:0)

从不仅仅依靠JS来验证输入。使用JS来实现您所说的行为,然后在PHP中处理所有可能的结果。如果有人不喜欢您的JS并绕过您实现的行为,则还需要能够在PHP代码中进行处理,以确保DB不会收到意外输入并破坏所有内容。就像以上Justin所说的那样,您可以选择其中一个,也可以抛出错误。我建议抛出一个错误并告诉用户确保他们启用了JS。