在foreach循环中一次显示错误消息

时间:2019-12-17 10:25:35

标签: php html foreach

我有一个简单的输入字段,使用propel更改数据库中的值。错误显示在表单底部,并显示错误之处。现在,我不会在正确的输入字段后面显示该错误。这样做的问题是使用foreach循环动态构建输入字段。因此,当我不想在前端显示错误时,将在每个具有相同名称的输入字段之后显示该错误。在这种情况下,如果我只更改一个错误,我有3个带有“ afsluitkosten”的字段,那么我就不想在匹配的输入字段之后才显示它。

if (isset($_POST['opslaan'])) {

    $naam = $_POST['naam'];
    $afsluitkosten = $_POST['afsluitkosten'];
    $percentage = $_POST['percentage'];
    $btw = $_POST['btw'];
    $id = $_POST['opslaan'];
    if ($afsluitkosten < 15)
     {
        if ($percentage < 1)
         {
            if ($btw < 50)
             {
                $annuleringOpslaan = AnnuleringsverzekeringQuery::create()->findOneById($id);
                $annuleringOpslaan->setNaam($naam);
                $annuleringOpslaan->setAfsluitkosten($afsluitkosten);
                $annuleringOpslaan->setPercentage($percentage);
                $annuleringOpslaan->setBtw($btw);
                $annuleringOpslaan->save();

                $opslaanSucces = "Annuleringsverzekering $naam is opgeslagen";
            } else {
                $fout1 = "De btw van annuleringsverzekering $naam moet onder de 50 zitten";
            }
        } else {
            $fout2 = "De percentage van annuleringsverzekering $naam moet onder de 1 zitten";
        }
    } else {
        $fout3 = "De afsluitkosten van annuleringsverzekering $naam moet onder de 15 zitten";
    }
};

// Gegevens ophalen en laten zien in front end
$annuleringen = AnnuleringsverzekeringQuery::create()
    ->find();

$annuleringarray = array();


foreach ($annuleringen as $annulering) {
    $array["id"] = $annulering->getId();
    $array["naam"] = $annulering->getNaam();
    $array["afsluitkosten"] = $annulering->getAfsluitkosten();
    $array["percentage"] = $annulering->getPercentage();
    $array["btw"] = $annulering->getBtw();
    $array["fout1"] = $fout1;
    $array["fout2"] = $fout2;
    $array["fout3"] = $fout3;

    array_push($annuleringarray, $array);
};

这是html

    <h2>{$doctitle}</h2>

    {foreach $annuleringarray as $array}
    <form action="annuleringsverzekering_bewerken.php" method="post">

        <label for="naam">Naam</label><input name="naam" value="{$array.naam}"><br>
        <label for="afsluitkosten">Afsluitkosten</label><input name="afsluitkosten" value="{$array.afsluitkosten}"><span class="error">{$array.fout3}</span><br>
        <label for="percentage">Percentage</label><input name="percentage" value="{$array.percentage}"><span class="error">{$array.fout2}</span><br>
        <label for="btw">Btw</label><input name="btw" value="{$array.btw}"><span class="error">{$array.fout1}</span> <br> 
        <button name="opslaan" value={$array.id}>Opslaan</button> <br> <br>

    </form>
    {/foreach}

    <h3 style="color:green;">{$opslaanSucces}</h3>

</body> ```

1 个答案:

答案 0 :(得分:1)

$errors=array(); // on before `if (isset($_POST['opslaan'])) {`

以及类似以下错误的错误传递给数组:

$errors[] = "Annuleringsverzekering $naam is opgeslagen";

并显示:

if ($errors){
 foreach($errors as $error){
 //do what ever you want here `echo $error;` or not echo $error;
 }
}

如果要在下面显示错误以输入有错误,请检查此示例: https://www.tutorialrepublic.com/php-tutorial/php-mysql-crud-application.php