首页 > 解决方案 > 每当在 if 循环中更改变量时,将布尔值从 false 切换为 true,如果更改包含表单

问题描述

我将错误捕获变量设置为 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;
    }
}

预期结果是,如果用户输入了不正确的值或根本没有输入值,则为该特定错误更新变量 $error,将布尔值从 false 更改为 true,然后允许再次尝试。如果没有错误,则回显“成功”消息。

标签: phpif-statementbooleanboolean-logicfilter-var

解决方案


推荐阅读