PHP форма неправильно проверяет поле формы - PullRequest
1 голос
/ 14 марта 2019

Я изучаю немного PHP, и после того, как сам PHP заработал, я не могу заставить его проверить правильность любого поля формы. Моя цель состоит в том, чтобы проверить, является ли поле имени пустым, и если оно есть, оно выдаст сообщение красным цветом. Сообщение в красном работает, но только потому, что эхо-скрипт вызывается отправкой формы, а не потому, что оно обнаружило пустое поле, потому что, когда я сделал оператор else, чтобы сказать «wassup», если он не пустой, я получил то же сообщение, когда поле пусто. Кроме того, есть ли способ отметить несколько полей ввода одновременно, как вы могли бы с JavaScript? Например, если input1 == '' || input2 == '' и так далее. Вот мой HTML:

<html>
<head>
<title>Welcome</title>
</head>
<body>
<form action="welcome.php" method="post">
<fieldset>
<legend>Personal Info</legend>
First name <input name="name" type="text"> 
Middle name <input name="middlename" type="text"> 
Surname <input name="lastname" type="text">  
Age <input name="age" type="number"> 
Date of birth <input name="dob"  type="date">
</fieldset>
<fieldset>
<legend>Regional & location info</legend>
Continent 
<select>
<option value="europe">Europe</option>
<option value="americas">America</option>
<option value="africa">Africa</option>
<option value="asia">Asia</option>
<option value="australia">Australia</option>
<option value="eurasia">Eurasia</option>
</select>
Country <input name="country" type="text"> State <input type="text"> 
City <input name="city" type="text">
Street number <input name="streetno" type="number"> 
Street name <input name="streetname" type="text"> <br><br>
Suburb <input name="suburb" type="text"> Postcode <input name="postcode" type="number"> 
If none of these apply to your accommodations, enter a typed location here <input  type="text">
</fieldset>
<fieldset>
<legend>Previous lifestyle accommodations</legend>
Previous &/or most recent job title <input name="job" type="text"> 
First   time job seeker <input type="checkbox" name="check1" value="ftjb"> 
I'm a student <input type="checkbox" name="check2" value="ias"> 
Previous &/or most recent acedemic title <input name="school" type="text"> 
First time applying for a qualification <input type="checkbox" name="check3" value="ftafaq"> 
I have work experience <input type="checkbox" name="check4" value="ihwe">
</fieldset>
<fieldset>
<legend>Details of arrival</legend>
Reason for arrival <input name="reason" type="text"> 
Date of arrival <input name="arrival" type="date"> 
Amount of stay expectancy 
<input type="checkbox" name="check3">Temporary 
<input type="checkbox" name="check4">Longterm
</fieldset>
<fieldset>
<legend>Signiture</legend>
<input name='signiture' type="text"> 
</fieldset>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html> 

Вот мой PHP-код:

<?php
$firstname = $_POST['name'];
$lastname = $_POST['lastname'];
$age = $_POST['age'];
$dob = $_POST['dob'];
$country = $_POST['country'];
$city = $_POST['city'];
$suburb = $_POST['suburb'];
$postcode = $_POST['postcode'];
$streetno = $_POST['streetno'];
$streetname = $_POST['streetname'];
$suburb = $_POST['suburb'];
$job = $_POST['job'];
$school = $_POST['school'];
$reason = $_POST['reason'];
$arrival = $_POST['arrival'];
$signiture = $_POST['signiture'];
if (isset($_POST['submit'])) {
    if (empty($_POST[$firstname])) {
        echo '<p style="color: red; text-align: center">Your first name is required</p>';
    } else {
        echo "wassaup";
    }
}





?>

Ответы [ 6 ]

0 голосов
/ 14 марта 2019

в html-форме, вы должны добавить атрибут, необходимый в html-теге и без использования PHP-обработки

First name <input name="name" type="text" required="required"> 

, и если пользователь не введет свое имя, он получит ошибкусообщение (что требуется имя)

0 голосов
/ 14 марта 2019

Сначала вы можете создать массив ошибок, куда вы поместите все свои ошибки

$error = array();

тогда при проверке нескольких полей

if (empty($_POST['firstname'])) $error[] = "First name can't be empty";
if (empty($_POST['lastname'])) $error[] = "Last name can't be empty";
// and so on

после того, как вы все сделаете оператор make, чтобы проверить, является ли массив ошибок пустым, если нет, отображать ошибки

if (empty($error)) {
   // do something
} else {
   // error exists you want to display all errors
   foreach ($error as $value) {
       echo '<ul><li>'.$value.'</li></ul>';
   }
}
0 голосов
/ 14 марта 2019

Изменение в вашем коде

if (!isset($_POST['firstname'] || empty($_POST['firstname'])) {
    echo '<p style="color: red; text-align: center">Your first name is required</p>';
  } else {
    echo "wassaup";
 }
0 голосов
/ 14 марта 2019

У вас неправильный синтаксис if (empty($_POST[$firstname])).Вы должны использовать '' одиночный парантез в firstname и удалить этот знак $.

0 голосов
/ 14 марта 2019

В вашем операторе if вам нужно сделать следующее:

if (empty($_POST['name'])) {    //Or replace $_POST['name'] with $firstname
    echo '<p style="color: red; text-align: center">Your first name is required</p>';
} else {
    echo "wassaup";
}
0 голосов
/ 14 марта 2019

измените if (empty($_POST[$name])) { на if (empty($_POST['firstname'])) { и проверьте снова.Ваш синтаксис неправильный, поэтому он не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...