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

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

Индекс материала
Как вывести ошибки при заполнении html формы
Как вывести ошибки при заполнении html формы стр.2
Все страницы

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

Функция pc_print_form() в примере ниже показывает, как это сделать.


  function pc_print_form($errors)
  {
    $fields = array('name' => 'Name','rank' => 'Rank','serial' => 'Serial');
    if (count($errors))
    {
      echo 'Please correct the errors in the form below.';
    }
    echo '<table>';
    
    // выводим ошибки и переменные формы
    foreach ($fields as $field => $field_name)
    {
      // открываем строку
      echo '<tr><td>';
      // печатаем ошибку
      if (!empty($errors[$field]))
      {
        echo $errors[$field];
      }
      else
      {
        echo '&nbsp;'; // чтобы не портить внешний вид таблиц
      }
      echo '</td><td>';
      
      // печатаем имя и введенную информацию
      $value = isset($_REQUEST[$field]) ? htmlentities($_REQUEST[$field]) : '';
      echo $field_name.':';
      echo '<input type=\"text\" name=\"$field\" value=\"$value\" />';
      echo '</td></tr>';
    }
    echo '</table>';
  }

Сложная часть функции pc_print_form() начинается с массива $fields. Ключ – это имя переменной; значением является подходящее для показа имя поля. Определив их в начале функции, можно создать цикл по значениям с помощью оператора PHP foreach; иначе понадобятся три отдельные строки с идентичным кодом. К этому добавляется использование имени переменной в качестве ключа в массиве $errors, поскольку можно найти сообщение об ошибке внутри цикла, просто проверяя элемент $errors[$field].

Если необходимо распространить этот пример на поля ввода, отличные от text, модифицируйте массив $fields, включив дополнительную метаинформацию о типах полей html формы:


    $fields = array( 'name' => array('name' => 'Name', 'type' => 'text'),
                     'rank' => array('name' => 'Rank', 'type' => 'password'),
                     'serial' => array('name' => 'Serial', 'type' => 'hidden') );    



Добавить комментарий


Защитный код
Обновить



Кто на сайте
Сейчас 120 гостей онлайн