Did the option to display the message under the field that is not filled:
Сначала проверим, была ли отправлена форма, а потом проверяем заполнены ли все обязательные поля из формы.
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$require = ['num1', 'num2']; //поля которые надо заполнить.
$errors[] = ''; //массив в котором сохраним ошибки
foreach($require as $key) {
if(empty($_POST[$key])) {
$errors[$key] = 'Это поле надо заполнить!';
}
}
}
?>
<form action='calc.php' method="post">
<label>Число 1:</label>
<br />
<input name='num1' type='text' />
<?php
$msg = isset($errors['num1']) ? "Введите первое число" : "";
echo $msg;
?>
<br />
<label>Оператор: </label>
<br />
<label for="operator">
<select name="operator" id="operator">
<option value="+">+</option>
<option value="-">-</option>
</select>
<br />
<label>Число 2: </label>
<br />
<input name='num2' type='text' />
<?php
$msg = isset($errors['num2']) ? "Введите первое число" : "";
echo $msg;
?>
<br />
<br />
<input type='submit' value='Считать'>
</form>
<br />
<br />
<?php
if (count($errors) > 0) {
echo 'Заполните все поля!';
}
?>
Сначала проверим, была ли отправлена форма, а потом проверяем заполнены ли все обязательные поля из формы.