Как сделать правильную обработку формы в данном случае?

Добрый день! Есть вопрос по обработке формы.

Пишу следующий код php:
/*сначала задаю переменным "пустые" значения.*/

$lastnameErr = $firstnameErr = $middle_nameErr = "";
$lastname = $firstname = $middle_name = "";

$arrayErr = "";
$arrayErr = array("lastnameErr", "firstnameErr", "middle_nameErr");

/*далее делаю обработку формы*/

if ($_SERVER['REQUEST_METHOD'] == "POST") { 
//проверяем запрощен ли скрипт post запросом, если да - обрабатываем так:     
 if (empty($_POST["lastname"])) {
    $lastnameErr = "Не заполнено обязательное поле";
  } else {
    $lastname = test_input($_POST["lastname"]);
  }
  if (empty($_POST["firstname"])) {
    $firstnameErr = "Не заполнено обязательное поле";
  } else {
    $firstname = test_input($_POST["firstname"]);
  }
  if (empty($_POST["middle_name"])) {
    $middle_nameErr = "Не заполнено обязательное поле";
  } else {
    $middle_name = test_input($_POST["middle_name"]);
  }
}
if (!empty($arrayErr)){
    echo "Спасибо, Ваши данные успешно сохранены!";
 }
/* доп пояснение: функция test_input отвечает за валидацию */

Форма в HTML выглядит так:
<label>Фамилия:</label>
    <input type="text" size="40" name="lastname" value= "<?php echo $lastname ?>" >
    <span class="error">* <?php echo $lastnameErr;?></span>
    <br><br>
 <label>Имя:</label>
    <input type="text" size="40" name="firstname" value= "<?php echo $firstname ?>" >
    <span class="error">* <?php echo $firstnameErr;?></span>
    <br><br>
 <label>Отчество:</label>
    <input type="text" size="40" name="middle_name" value= "<?php echo $middle_name ?>" >
    <span class="error">* <?php echo $middle_nameErr;?></span>
    <br><br>
 <input type="submit" name="submit" value="Сохранить">


Необходимо, чтоб осуществлялась проверка на содержимое массива $arrayErr после нажатия на кнопку submit.
И только в случае если значения всех его переменных будут пустые, клиенту отображалось сообщение "Спасибо, Ваши данные успешно сохранены!".
Если же хоть одна переменная данного массива имеет какое-либо значение, отличное от empty, то такое сообщение выводить не надо, выполняется только вывод строки "Не заполнено обязательное поле".

Если есть другой вариант реализации данной идеи, пожалуйста, сообщите.
Заранее спасибо за ответ.
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Слушайте, ну уже пхп7 вышел, уже пхп4 10 лет как не актуален, НУ ОТКУДА ВЕСЬ ЭТОТ МУСОР ИЗ 90х??? Неужто так сложно прочитать про ооп и мвц, ну пусть мвц не сразу, но хоть понятие объектов, вы же такой говнокод небось еще и в рабочем проекте использовать будете? Вам же нужно как-то потом людям в глаза смотреть! Не стыдно?
Ответ написан
Может так?
$arrayErr = array();

/*далее делаю обработку формы*/

if ($_SERVER['REQUEST_METHOD'] == "POST") { 
//проверяем запрощен ли скрипт post запросом, если да - обрабатываем так:     
 if (empty($_POST["lastname"])) {
    $arrayErr['lastnameErr'] = "Не заполнено поле фамилия";
  } else {
    $lastname = test_input($_POST["lastname"]);
  }
  if (empty($_POST["firstname"])) {
    $arrayErr['firstnameErr'] = "Не заполнено поле имя";
  } else {
    $firstname = test_input($_POST["firstname"]);
  }
  if (empty($_POST["middle_name"])) {
    $arrayErr['middlenameErr'] = "Не заполнено поле отчество";
  } else {
    $middle_name = test_input($_POST["middle_name"]);
  }
}
if (!empty($arrayErr)){
    echo "Спасибо, Ваши данные успешно сохранены!";
 }
/* доп пояснение: функция test_input отвечает за валидацию *
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы