Как изменить код php для отображения ошибок в каждом поле ввода - PullRequest
1 голос
/ 06 апреля 2020

У меня есть следующий код:

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

        if (! isset($_POST['firstname'])) {
            $error[] = "Please fill out all fields";
        }

        if (! isset($_POST['surname'])) {
            $error[] = "Please fill out all fields";
        }
........

с проверкой:

if (strlen($_POST['firstname']) < 2){
        $error[] = 'First name cannot be empty';
    }
    if (strlen($_POST['surname']) < 2){
        $error[] = 'Please provide your surname';
    }

......

Дополнительные проверки сделаны с базой данных ....

Эта проверка для ошибки и отображает их в одном go:

if(isset($error)){
                    foreach($error as $error){
                        echo '<p class="error-login">'.$error.'</p>';
                    }
                }

Хотя это работает нормально, я хотел бы, чтобы ошибки отображались под каждым полем ввода, где происходит ошибка.

I я не хочу менять весь код, просто хочу внести необходимые изменения в этот код, что я сам не в силах сделать.

Единственный подход - это поместить их в массив или есть более простой способ ?

Спасибо.

1 Ответ

1 голос
/ 06 апреля 2020

Подход состоит в том, чтобы - добавить ошибки к $error под определенной клавишей, я полагаю - имя поля ввода:

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

    // I use key `all` for errors that don't belong to any field

    if (! isset($_POST['firstname'])) {
        $error['all'] = "Please fill out all fields";
    }

    if (! isset($_POST['surname'])) {
        $error['all'] = "Please fill out all fields";
    }

    if (strlen($_POST['surname']) < 2){
        $error['surname'] = 'Please provide your surname';
    }

В вашей html разметке:

// general errors, not related to inputs
if(isset($error['all'])){
    foreach($error['all'] as $err){
        echo '<p class="error-login">'.$err.'</p>';
    }
}

<input type="text" name="surname" />
<?php
if(isset($error['surname'])){
    foreach($error['surname'] as $err){
        echo '<p class="error-login">'.$err.'</p>';
    }
}
...