Переменная не обновляется через функцию php - PullRequest
0 голосов
/ 10 февраля 2019

Я следовал руководству wc3 по отображению переменных php, чтобы обозначить неправильные поля ввода в значительной степени буквой.Я не понимаю, почему это не работает.

У меня есть странная проблема с областями видимости:

tools.php:

if(!isset($_POST)){
    $name_error = "";
}
if(isset($_POST) && !empty($_POST)){
    $_SESSION['current'] = $_POST;
    validateForm();
}

index.php:

<span class="error"><?php echo $name_error; ?></span>

tools.php:

function validateForm() {
    $cust = $_SESSION['current']['cust'];
    $usermovie = $_SESSION['current']['movie'];
    $userseats = $_SESSION['current']['seats'];
    if(!preg_match('/[a-zA-Z ]+/', $cust['name']) || empty($cust['name'])){
        $name_error = "a-z only.";
        echo $name_error;
    } else{
        $_SESSION['bookings'][] = $_SESSION['current'];
        echo 'pass';
        $name_error = "";
    }

}

Я знаю, что он попадает в функцию и обновляет значение $ name_error, потому что оно отображает правильное значение из функции.Аналогично, если я вручную установлю значение $ name_error в строку, оно будет правильно отображаться в диапазоне ошибок.Однако значение $ name_error в span НЕ обновляется, когда я просто отправляю форму / запускаю функцию как обычно.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Сработало, нужно объявить

global $name_error;

в начале функции - может кто-нибудь дать мне способ вернуть результат отдельных функций в пределах диапазона ошибок?Я, очевидно, не могу просто позвонить им туда.

0 голосов
/ 10 февраля 2019

Вы не возвращаете никакого значения.Вернуть значение $name_error, например:

if(!isset($_POST)){
    $name_error = "";
}
if(isset($_POST) && !empty($_POST)){
    $_SESSION['current'] = $_POST;
    $name_error = validateForm();
}

function validateForm() {
    $cust = $_SESSION['current']['cust'];
    $usermovie = $_SESSION['current']['movie'];
    $userseats = $_SESSION['current']['seats'];
    if(!preg_match('/[a-zA-Z ]+/', $cust['name']) || empty($cust['name'])){
        $name_error = "a-z only.";
    } else{
        $_SESSION['bookings'][] = $_SESSION['current'];
        echo 'pass';
        $name_error = "";
    }
    return $name_error;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...