Как перенаправить на другую страницу (если поле установлено) или показать ошибку на той же странице (если поле пустое) при нажатии кнопки Отправить в php - PullRequest
0 голосов
/ 17 марта 2019

У меня есть 4 поля, при загрузке страницы я не хочу, чтобы отображалась какая-либо ошибка. Но если поля оставить пустыми и нажать «Отправить», я хочу показать ошибки.

Я хочу, чтобы моя страница загружалась первой. Затем, когда нажата кнопка «отправить», он проверяет, не задано ли какое-либо из полей, если да, то покажите эти ошибки и предотвратите перенаправление страницы на другую страницу (здесь «slots.php»), и все ли в порядке. затем перенаправить страницу. Это код php:

<?php

      $error = "";

      if($_POST){

          if($_POST['parking_area']!="")
          {$_SESSION['parking_area'] = $_POST['parking_area'];}

          if($_POST['vehicle_no']!="")
          {$_SESSION['vehicle_no'] = $_POST['vehicle_no'];}

          if($_POST['time_from']!="")
          {$_SESSION['time_from'] = $_POST['time_from'];}

          if($_POST['time_to']!="")
          {$_SESSION['time_to'] = $_POST['time_to'];}




          if($_POST['parking_area'] == "select" || $_POST['parking_area'] == "" )
          {$error .= "<p>Please select the parking area</p>";}

          if(!$_POST['vehicle_no'])
          {$error .= "<p>Please enter the vehicle number</p>";}

          if(!$_POST['time_from'])
          {$error .= "<p>Please enter the in time</p>";}

          if(!$_POST['time_to'])
          {$_error .= "<p>Please enter the out time</p>";}

          if($error!=""){
              $error = "<div class='error'>".$error."</div>";
          }
      }

?>

Это HTML-код:

<div><?php echo $error;?></div>
              <div class="main-form">

                  <!--<div id="faltu"></div>-->

                  <!--action="slots.php"-->

                  <form method="POST" action="slots.php">

                      <div class="area main-form-components">
                          <select name="parking_area">
                              <option value="select">--Select--</option>
                              <option value="mahu-naka">Mahu Naka Parking</option>
                              <option value="collectorate">Collector Office Parking</option>
                              <option value="treasure-island">Treasure Island</option>
                              <option value="central-mall">Central Mall Parking</option>
                          </select>
                      </div>

                      <div class="time main-form-components">
                          <input type="time" name="time_from" value="09:30"> to 
                          <input type="time" name="time_to" value="17:30">
                      </div>


                      <div class="vnumber main-form-components">
                          <input type="text" name="vehicle_no">
                      </div>

                          <!--
                      <div class="buttons">
                          <div id="prev-button"><i class="fas fa-arrow-left"></i> Prev.</div>
                          <div id="next-button">Next <i class="fas fa-arrow-right"></i></div>
                      </div>
                          -->

                      <div>
                          <input type="submit">
                      </div>

                          <!--<div class="buttons">
                              <button><i class="fas fa-arrow-left"></i> Prev.</button>
                              <button>Next <i class="fas fa-arrow-right"></i></button>
                          </div>-->

                      </form>
                  </div>

Редактировать: Я знаю, как я могу это сделать с помощью JavaScript, но я ищу способ сделать это без использования JavaScript, только с PHP, если это возможно.

Ответы [ 2 ]

1 голос
/ 17 марта 2019

Это должно работать. У меня есть и HTML-код, и PHP-код в том же файле, что и slots.php. После публикации значений мы проверяем значение, и если все значения есть, мы перенаправляем на страницу успеха или показываем ошибку на той же странице.

<?php

$error = "";

if($_POST){

    if($_POST['parking_area']!=""){
        $_SESSION['parking_area'] = $_POST['parking_area'];
    }

    if($_POST['vehicle_no']!=""){
        $_SESSION['vehicle_no'] = $_POST['vehicle_no'];
    }

    if($_POST['time_from']!=""){
        $_SESSION['time_from'] = $_POST['time_from'];
    }

    if($_POST['time_to']!=""){
        $_SESSION['time_to'] = $_POST['time_to'];
    }


    if($_POST['parking_area'] == "select" || $_POST['parking_area'] == "" ){
        $error .= "<p>Please select the parking area</p>";
    }

    if(!$_POST['vehicle_no']){
        $error .= "<p>Please enter the vehicle number</p>";
    }

    if(!$_POST['time_from']){
        $error .= "<p>Please enter the in time</p>";
    }

    if(!$_POST['time_to']){
        $_error .= "<p>Please enter the out time</p>";
    }

    if($error!=""){
        $error = "<div class='error'>".$error."</div>";
    }
    else {
        header('Location: success.php');
    }
}
?>

Я добавил редирект расположения заголовка, если нет ошибки. Представьте, что success.php - это страница, на которую нам нужно перенаправить пользователя, если на странице установлены значения.

<div>
<?php echo $error;?></div>
<div class="main-form">
    <form method="POST" action="slots.php">

        <div class="area main-form-components">
            <select name="parking_area">
                <option value="select">--Select--</option>
                <option value="mahu-naka">Mahu Naka Parking</option>
                <option value="collectorate">Collector Office Parking</option>
                <option value="treasure-island">Treasure Island</option>
                <option value="central-mall">Central Mall Parking</option>
            </select>
        </div>

        <div class="time main-form-components">
            <input type="time" name="time_from" value="09:30"> to 
            <input type="time" name="time_to" value="17:30">
        </div>


        <div class="vnumber main-form-components">
            <input type="text" name="vehicle_no">
        </div>


        <div>
            <input type="submit">
        </div>
    </form>
</div>

0 голосов
/ 17 марта 2019

Следует определить идентификатор или тег NAME для каждого входа, а затем:

В этом примере для двух текстовых областей (a, b):

<script type="text/javascript">
    function func()
    {
        var a=document.forms["Form"]["answer_a"].value;
        var b=document.forms["Form"]["answer_b"].value;
        if (a==null || a=="",b==null || b=="")
        {
            alert("Please Fill All Required Field");
            return false;
        }
    }
</script>

<form method="post" name="Form" onsubmit="return func()" action="">
     <textarea cols="30" rows="2" name="answer_a" id="a"></textarea>
     <textarea cols="30" rows="2" name="answer_b" id="b"></textarea>
     <input type="submit">

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