!is_numeric($_POST['year']) && !is_numeric($_POST['mileage']
проблема. Вы показываете ошибку, только если оба поля не являются числовыми c.
Вы можете изменить AND (&&
) на OR (||
), чтобы любое из быть нечисловым c вызовет ошибку.
Но, возможно, имеет смысл проверять каждый из них отдельно и выводить отдельное сообщение об ошибке для каждого. Логически непонятно, зачем вы их так смешали. И сообщения об ошибках должны накапливаться кумулятивно, а не только одно или другое, иначе, если пользователь совершит более одной ошибки, вы будете возвращать только одну из них за раз, и им придется продолжать повторную отправку, что будет неприятно. даже просто создайте список сообщений и позвольте разделу пользовательского интерфейса обрабатывать форматирование - например, помещать их в <ul>
или что-то в этом роде):
$failure = "";
....
if (strlen($_POST['make']) < 1) {
$failure .= "Make is required";
}
if (!is_numeric($_POST['year']) {
$failure .= "<br/>Year must be numeric";
}
if (!is_numeric($_POST['mileage']) ) {
$failure .= "<br/>Mileage must be numeric";
}
.....
if ( $failure == "" ) {