rash012
Новичок
Дали задание. Заметны ли косяки?
как можно иначе реализовать подсветку невалидных данных?
я так понимаю когда форма отправилась и пришла таблица, при обновлении страницы должна приходить изначальная форма, а она не приходит. как сделать полный сброс при обновлении?
Задание по PHP 2
Реализовать скрипт, реализующий ввод и проверку (валидацию) следующих данных:
1) Фамилия, имя — текстовое поле — только русские буквы, пробелы — обязательное поле
2) Возраст — строго целое положительное число
3) Адрес электронной почты (строго по шаблону [email protected], где b-латинские буквы) - обязательное поле
4) Пол — выбор из списка Мужской, Женский
5) «Я курю» - чекбокс (галочка)
При допущенных ошибках система должна сообщать, какие ошибки допустил пользователь, и предлагать их исправить, показывая ту же форму с введенными данными. Необходимо подсвечивать поля с ошибками красной рамочкой.
В случае удачного ввода выводить в браузер введенные данные в виде таблицы и кнопку "Ввести"
файл validate.php
как можно иначе реализовать подсветку невалидных данных?
я так понимаю когда форма отправилась и пришла таблица, при обновлении страницы должна приходить изначальная форма, а она не приходит. как сделать полный сброс при обновлении?
Задание по PHP 2
Реализовать скрипт, реализующий ввод и проверку (валидацию) следующих данных:
1) Фамилия, имя — текстовое поле — только русские буквы, пробелы — обязательное поле
2) Возраст — строго целое положительное число
3) Адрес электронной почты (строго по шаблону [email protected], где b-латинские буквы) - обязательное поле
4) Пол — выбор из списка Мужской, Женский
5) «Я курю» - чекбокс (галочка)
При допущенных ошибках система должна сообщать, какие ошибки допустил пользователь, и предлагать их исправить, показывая ту же форму с введенными данными. Необходимо подсвечивать поля с ошибками красной рамочкой.
В случае удачного ввода выводить в браузер введенные данные в виде таблицы и кнопку "Ввести"
файл validate.php
Код:
<html>
<style>
.red{
border-color: #ffa5ad;
}
p{
color:red;
}
</style>
<body>
<?php
if(isset($_POST['submit'])) {
$name = $_POST['name'];
$age = $_POST['age'];
$mail = $_POST['mail'];
$gender = $_POST['gender'];
$smoking = (empty($_POST['smoking']))?"нет":"да";
$is_valid = true;
if (!preg_match('/[А-я]+\s[А-я]+$/msix', $name)) {
$is_valid = false;
$name_red = "red";
echo '<p>Поле "фамилия,имя" должно содержать русские буквы и пробел</p>';
}
if ($age<=0 && !empty($age)){
$is_valid = false;
$age_red="red";
echo '<p>Поле возраст должно содержать положительное число</p>';
}
if(!preg_match('/^[a-zA-Z]+@[a-zA-Z]+\.[a-zA-Z]+$/', $mail)){
$is_valid = false;
$mail_red="red";
echo '<p>Электронная почта введена неверно</p>';
}
}
?>
<? if(!$is_valid){?>
<form method="post" action="validation.php">
<label>Фамилия, имя
<input type="text" name="name" id="name" value="<?=$name?>" class="<?=$name_red?>">
</label>
<br>
<label>Возраст
<input type="text" name="age" id="age" value="<?=$age?>" class="<?=$age_red?>">
</label>
<br>
<label>Адрес электронной почты
<input type="text" name="mail" id="mail" value="<?=$mail?>" class="<?=$mail_red?>">
</label>
<br>
<label>Пол
<select name="gender" id="gender" value="<?=$gender?>">
<option>Мужской</option>
<option>Женский</option>
</select>
</label>
<br>
<label>Я курю
<input type="checkbox" name="smoking" id="smoking" <?=(empty($_POST['smoking']))?"":"checked"?>>
</label>
<br>
<input type="submit" value="оправить" id="submit" name="submit">
</form>
<? } ?>
<?if($is_valid){?>
<table border="1">
<tr>
<td>Фамилия, имя</td>
<td><?= $name ?></td>
</tr>
<tr>
<td>Возраст</td>
<td><?= $age ?></td>
</tr>
<tr>
<td>Адрес электронной почты</td>
<td><?= $mail ?></td>
</tr>
<tr>
<td>Пол</td>
<td><?= $gender ?></td>
</tr>
<tr>
<td>Я курю</td>
<td><?= $smoking ?></td>
</tr>
</table>
<br>
<input type="submit" value="ввести">
<? } ?>
</body>
</html>