Переключение логического значения с ложного на истинное всякий раз, когда переменная изменяется в цикле if, если изменено, включает в себя форму - PullRequest
0 голосов
/ 07 февраля 2019

У меня для переменных перехвата ошибок установлено значение false, поэтому при загрузке страницы сообщения об ошибках не выбрасываются.У меня есть переменная $error, которая изначально установлена ​​как инициализатор, например, $error = " ";.Всякий раз, когда возникает ошибка, я бы хотел, чтобы $error было установлено для сообщения, которое отображает каждая ошибка, и если $error не соответствует тому, с чем оно было первоначально инициализировано, то оно должно включать мою страницу формы, чтобы позволить пользователюпопробуйте еще раз.

Я пытался установить для переменной $error новую строку для указанной ошибки, например, "Вы не можете оставить поле цены пустым!"и в конце моего начального цикла if есть еще один цикл if, проверяющий, была ли изменена $error, и если она была добавлена, снова включите страницу формы.На данный момент мои переменные никогда не меняются и остаются только такими, какими они были изначально установлены.

$pError = false;
$cError = false;
$error = " ";

if(!isset($_GET['pPrice']) || (!isset($_GET['cPrice']))){ //if not set include form
    include "form.php";
}
if(isset($_GET['pPrice']) && isset($_GET['cPrice'])){ //if set get variables from form
    $pPrice = $_GET['pPrice'];
    $cPrice = $_GET['cPrice'];
    $validateP = filter_input(INPUT_GET, 'pPrice', FILTER_VALIDATE_FLOAT); //checks to see if value is a float
    $validateC = filter_input(INPUT_GET, 'cPrice', FILTER_VALIDATE_FLOAT); //checks to see if value is a float

    if(empty($_GET['pPrice']) && (empty($_GET['cPrice']))){ //both fields empty
        $error = "<h2 class='error'>Please make sure you fill out all the fields!</h2>";
    }
    else if(empty($_GET['pPrice'])){ //first field empty
        $error = "<h2 class='error'>Previous price can't be empty!</h2>";
    }
    else if(empty($_GET['cPrice'])){ //second field empty
        $error = "<h2 class='error'>Current price can't be empty!</h2>";
    }
    else if(!$validateP && !$validateC){ //both fields have incorrect inputs
        $error = "<h2 class='error'>Please enter numbers only!</h2>";
    }
    else if(!$validateP){ //first field has a incorrect input
        $error = "<h2 class='error'>Previous Price must be a valid number!</h2>";
    }
    else if(!$validateC){ //second field has a incorrect input
        $error = "<h2 class='error'>Current Price must be a valid number!</h2>";
    }
    else {
        echo "Your results have been submitted!";                 
    }

    if (!$error == " ") {
        $pError == true;
        $cError == true;
        echo $error;
        include "form.php";
    } else{
        $pError = false;
        $cError = false;
    }
}

Ожидаемые результаты: если пользователь введет неправильное значение или не введет значение вообще, обновите переменную $ошибка для этой конкретной ошибки, измените логическое значение с false на true, затем разрешите еще одну попытку.Если ошибок нет, выведите сообщение «success».

...