Как вывести ошибки при заполнении html формы

Как вывести ошибки при заполнении html формы

Когда возникает проблема с данными, введенными в html форму, генерируемую PHP скриптом необходимо вывести сообщения об ошибках причём желательно это сделать рядом с проблемными полями, вместо генерации сообщения об ошибке в начале формы. Также по-правильному нужно сохранить значения, которые пользователь напечатал в html форме. Иначе вы рискуете отбить охоту регистрироваться у вас на сайте, предлагая пользователю по десять раз вводить одно и тоже.

Один из вариантов это сделать сохранить сообщения в массиве $errors, индексируя их по именам полей.

 

if (!pc_validate_zipcode($_REQUEST['zipcode']))

{

  $errors['zipcode'] = 'This is is a bad ZIP Code. ZIP Codes must

                        have 5 numbers and no letters.';

}

При повторном выводе html формы, если при вводе пользователь где то накосячил, можно показывать каждую ошибку с помощью поля, помещая в него исходное значение:

 

echo $errors['zipcode'];<br>

$value = isset($_REQUEST['zipcode']) ? htmlentities($_REQUEST['zipcode']) : '';<br>

echo "<input type=\"text\" name=\"zipcode\" value=\"$value\">";

Если пользователи сталкиваются с ошибками при заполнении длинной html формы, то можно повысить общее удобство и простоту использования html формы, четко выделяя место, где нужно исправить ошибки. Объединение всех ошибок в одном массиве дает много преимуществ.

Прежде всего, нетрудно определить, нашлись ли в результате проверки на достоверность информации какие-либо элементы, требующие исправления; просто используйте PHP функцию count($errors). Если она вернёт число отличное от нуля, то значит есть проблемы.

Использовать такой метод проще, чем следить за этим событием с помощью отдельной переменной, особенно, если поток или PHP скрипт сложный или реализуется с помощью множества функций. В примере ниже показана функция проверки на правильность pc_validate_form(), которая использует массив $errors.

 

function pc_validate_form()

{

  if (! pc_validate_zipcode($_POST['zipcode']))

  {

    $errors['zipcode'] = "ZIP Codes are 5 numbers";

  }     

  if (! pc_validate_email($_POST['email']))

  {

    $errors['email'] = "Email addresses not correct!";

  }

  return $errors;

}

 

Возможно Вас заинтересуют эти материалы

PHP: Буферизация вывода

Буферизация вывода в PHP это довольно полезная штука, если уметь ею пользоваться. Скажите сколько раз

POP3 протокол с примерами

POP3 это протокол по которому мы можем получить почту с сервера, для подобной задачи, используется

PHP: Хранение сессии в базе данных

Как и обещал, тема данной заметки: база данных, как обработчик сессии. А так как на