Заголовки PHP работают только если HTML-форма полностью заполнена - PullRequest
0 голосов
/ 10 декабря 2018

Я попытался создать страницу, чтобы пользователь мог ввести некоторую информацию (имя, фамилия);однако пользователь также может не вводить какую-либо информацию в форму HTML и может нажать кнопку «Отправить», оставив ее пустой.Страница принимает данные, заданные пользователем, или создает данные по умолчанию, если пользователь оставил HTML-форму пустой, и вводит ее в таблицу MySQL.

После обработки данных MySQL он перенаправляется на другую страницу с помощью заголовка PHP.Другая страница имеет ту же цель, но разные данные (должность, имя работодателя).Разница на второй странице заключается в том, что она имеет две кнопки отправки - одна позволяет пользователю добавлять другой набор данных (должность, имя работодателя), а другая - перенаправлять его на следующую страницу.

У меня был успех с первой страницей сбора пользовательских данных, и, если оставить пустым, он обрабатывает данные MySQL по умолчанию.Затем он успешно перенаправляет на следующую страницу.На странице 2 он может обрабатывать только заполненные пользовательские данные в форме HTML, но если что-либо оставить пустым (или если форма полностью пуста), он не будет обрабатывать данные по умолчанию и просто перенаправит их обратно в себя без обработки MySQL.

Я не знаю, почему страница 2 не будет обрабатывать данные по умолчанию, а затем перенаправить на страницу 3.

Требуется один раз в начале каждой страницы (pdo.php)просто создав объект pdo и соединение.

Я упростил код здесь:

Страница 1:

<?php
     session_start();
     require_once "pdo.php";
         if (isset($_POST['first_name']) &&
             isset($_POST['last_name']))
            {
              $sql1 = "INSERT INTO Users (first_name,             
                       last_name)
                       VALUES(:first_name,             
                              :last_name)";

              $stmt1 = $pdo->prepare($sql1);
              $stmt1->execute(array(
                         ':first_name' =>    
                         (empty($_POST['first_name']))  
                          ? 'NoFirstNameGiven' : 
                          $_POST['first_name'],
                         ':last_name' => 
                          (empty($_POST['last_name']))  
                          ? 'NoLastNameGiven' : 
                          $_POST['last_name']));

              header("Location: page2.php");
              exit;
            }
  ?>

И Страница 2:

<?php
session_start();
require_once "pdo.php";

     if (isset($_POST['job_title']) &&
        isset($_POST['employer_name'])) 
              {

                   $sql = "INSERT INTO Employment   
                   (job_title, employer_name)
                   VALUES(:job_title, :employer_name)";

                   $stmt = $pdo->prepare($sql);
                   $stmt->execute(array(
                        ':job_title' =>    
                        (empty($_POST['job_title']))  
                        ? 'NoJobTitleGiven' : 
                        $_POST['job_title'],

                       ':employer_name' =>   
                       (empty($_POST['employer_name'])) 
                       ? 'NoEmployerGiven' :  
                       $_POST['employer_name']));

                  if(isset($_POST['nextButton'])){
                       header("Location: page2.php");
                       exit;
                     }
                  if(isset($_POST['add_job'])){
                       header("Location: page3.php");
                       exit;
                    }
              }
  ?>

1 Ответ

0 голосов
/ 10 декабря 2018

На странице 2 в if (isset($_POST['job_title']) имеется синтаксическая ошибка, вероятно, отсутствует &&, как и в случае страницы 1.

...