Как отобразить ошибку и запретить отправку двух входных данных в форме PHP - PullRequest
0 голосов
/ 29 октября 2018

В одной моей форме у меня есть возможность выбрать из поля выбора или ввести информацию вручную.

Я хочу запретить пользователю входить в оба. Они должны либо выбрать из выбора ИЛИ ввести вручную, если их выбор еще не там.

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 голосов
/ 29 октября 2018

Никогда не полагайтесь только на JS для проверки ввода. Используйте JS, чтобы реализовать поведение, о котором вы говорите, а затем обработать все возможные результаты в PHP. Если кто-то возится с вашим JS и обходит поведение, которое вы реализуете, вы должны быть в состоянии справиться с этим и в своем PHP-коде, чтобы убедиться, что DB не получает неожиданный ввод и не ломает все. Точно так же, как Джастин сказал выше, вы можете выбрать один или другой, или выдать ошибку. Я рекомендую выдать ошибку и сообщить пользователю, что у него включен JS.

0 голосов
/ 29 октября 2018

В вашем HTML-документе вы должны использовать Javascript для проверки ввода пользователя перед отправкой формы в сценарий PHP. Затем в сценарии PHP необходимо дважды проверить, что значения не были получены как для выбора, так и для ввода (это может произойти, если у пользователя не включен Javascript или они каким-то образом обходят проверку) и определить, что вы хотите в этом случае (выберите одно поверх другого или выйдите с ошибкой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...