Я создал форму с несколькими пользовательскими вводами, но утомительной задачей является проверка того, не является ли каждый отдельный ввод пустым перед отправкой. Есть ли более быстрый способ (например, использование массивов) перечисления всех аргументов в операторе if?
На данный момент мой код выглядит следующим образом, но если возможно, я бы хотел, чтобы он был более эффективным в будущем, например, если бы я добавил больше входных данных.
<form action="sign-up.php" method="post" autocomplete="off" >
Name:<input type="text" name="name" />
Username:<<input type="text" name="username" /><br />
Password:<input type="password" name="password1" /><br />
Re-type Password:<input type="password" name="password2" /><br />
Email:<input type="text" name="email" />
Address:<input type="text" name="address" />
Post Code:<input type="text" name="postcode" />
City:<input type="text" name="city" />
<input class="submit" type="submit" value="sign up" />
</form>
<?php
if (!empty($_POST['name'])
&& !empty($_POST['username'])
&& !empty($_POST['password1'])
&& !empty($_POST['password2'])
&& !empty($_POST['email'])
&& !empty($_POST['address'])
&& !empty($_POST['postcode'])
&& !empty($_POST['city']) )
{
echo "information has been submitted";
}
else {
echo "please fill in all fields!"}
?>
Если у вас есть какие-либо предложения, пожалуйста, прокомментируйте.
Итак, что это будет делать, это перебирать значения $ _POST и проверять, являются ли они пустыми. Если один найден пустым, он установит $hasErrorOccurred
к истине. if statement
ниже определит, будет ли проверка ввода успешной или нет.
$hasErrorOccurred = false;
foreach ($_POST as $key => $value) {
if (empty($_POST[$key])) {
$hasErrorOccurred = true;
break;
}
}
if ($hasErrorOccurred) {
// Your error code here.
} else {
// Your successful code here.
}
Материал для чтения:
Если вы хотите назначить переменные для каждого поля ввода, я так и сделал.
foreach ($_POST as $key => $value) {
$$key = $_POST[$key]; //assigns input name to variable with the same name.
}
if(!empty($$key)) {
//code if all fields are not empty
}
else {
echo "Please fill in all fields";
}
Вот способ, которым я попытался описать комментарии к ответу Script47, чтобы я мог немного лучше прояснить свою мысль:
$requiredFields = ['name','username','password1','password2'];
foreach ($requiredFields as $field) {
if (!array_key_exists($field, $_POST) || empty($_POST[$field])) {
displayMissingFieldAlert($field);
}
}
// do the submit etc.
...
Таким образом, вы можете поймать, если поле как-то забыто, написано с ошибкой или оставлено вне представления.