Каков наилучший способ предоставить много аргументов для оператора if?

Я создал форму с несколькими пользовательскими вводами, но утомительной задачей является проверка того, не является ли каждый отдельный ввод пустым перед отправкой. Есть ли более быстрый способ (например, использование массивов) перечисления всех аргументов в операторе 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!"}

?>

Если у вас есть какие-либо предложения, пожалуйста, прокомментируйте.

0

Решение

Итак, что это будет делать, это перебирать значения $ _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.
}

Материал для чтения:

break;

1

Другие решения

Если вы хотите назначить переменные для каждого поля ввода, я так и сделал.

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";

}
0

Вот способ, которым я попытался описать комментарии к ответу 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.
...

Таким образом, вы можете поймать, если поле как-то забыто, написано с ошибкой или оставлено вне представления.

0
По вопросам рекламы [email protected]