每当在 if 循环中更改变量时,将布尔值从 false 切换到 true,如果更改了包含形式

Switching boolean from false to true whenever a variable is being changed within a if loop, if changed include form

提问人:Auron Kelmud 提问时间:2/7/2019 最后编辑:Greg SchmidtAuron Kelmud 更新时间:2/7/2019 访问量:152

问:

我将错误捕获变量设置为false,因此每当页面加载时,都不会抛出任何错误消息。我有一个变量,最初设置为初始值设定项,例如 .每当出现错误时,我希望设置为每个错误正在回声的消息,如果不等于最初初始化的消息,那么它应该包括我的表单页面,以允许用户重试。$error$error = " ";$error$error

我尝试的是将变量设置为指定错误的新字符串,例如“你不能让价格框留空!”,在我的初始if循环的末尾,还有另一个if循环检查是否被更改,如果是,则再次包含表单页面。截至目前,我的变量从未更改,只是保持最初设置的状态。$error$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,然后允许再次尝试。如果没有错误,则回显“成功”消息。

php if-statement 布尔 逻辑 过滤器 var

评论

2赞 ArtisticPhoenix 2/7/2019
为什么不使用数组来处理错误,然后简单地使用它。然后,您的用户可以看到所有错误。我最讨厌的莫过于填写一个大表格,一次显示 1 个错误,并浪费 15 分钟重新提交页面。count
0赞 Auron Kelmud 2/7/2019
您是否暗示将所有错误消息放在一个数组中并调用错误消息的指定索引?
0赞 ArtisticPhoenix 2/7/2019
不,我的意思是你把所有的错误放在一个数组中,然后将它们全部显示给用户。您甚至可以使用字段名称作为该数组的键,然后向它们显示它们所属的位置。只是说...
0赞 Auron Kelmud 2/7/2019
所以基本上是每个错误的推动?我这样做的原因是,在我的css中,我想更改有错误的特定框的背景颜色。这就是在我的表单的 css 中使用布尔值作为 if-else 语句的原因。
1赞 Greg Schmidt 2/7/2019
如果您有一个按字段名称键入的错误数组,似乎更容易突出显示有错误的字段?空数组表示没有错误。

答: 暂无答案