2013-03-30 2 views
2

Я строю форму (FUN) и, очевидно, те могут получить утомительно и, как я сижу здесь пишу функции проверки я задаюсь ...Php Массовая проверка/группа значений

Скажем, например, у меня есть 3 поля * (имя, фамилия, возраст) *

переменные

$fname = $_POST['name']; 
$lname = $POST['lname']; 
$age = $_POST['age']; 

И сказать, что я хочу, чтобы проверить стеклотары, идентификатор

if(empty($fname) || empty($lname) || empty($age)){ 
//do something 
} 

Есть ли способ сделать это более управляемым? Потому что скажите, что теперь, вместо 3 полей в форме, у меня есть 100 ... он становится довольно неуправляемым быстрым

Так что я могу проверить en-mass?

+0

Как вы проектируете свою форму, чтобы иметь '100 fields' почему бы не сделать это мастер ??? – Baba

ответ

1

if(empty($_POST)){..}else{...} даст вам результат, в зависимости от: Если установлено более одного значения; или значение не установлено вообще. Вид как True/False.

Но вы должны не включать value='' для «Submit Button» само по себе, в противном случае, это даст вам истинный результат, все время. Поскольку глобальный $_POST также проверяет значение кнопки отправки. или вы можете вычесть одно значение из вашего запроса. При желании вы можете отлаживать значения по var_dump($_POST)

Если вы хотите проверить, «по-крайней мере одно поле не пусто», то,

if(count($_POST) !=0){ 
    echo ' at least one value is set';} 
else {echo 'no value is set';} 

будет проверять, если есть хотя-бы, один элемент, представленный.

+0

Это проверит только если никакие поля не отправлены. @somdow хотел проверить, был ли хотя бы один пуст. См. || в его первоначальном заявлении. EDIT: Nevermind, только что видел ваше редактирование. :) – Adrian

+0

@AdrianCrepaz Я обновил свой ответ – samayo

1

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

if(!empty($_POST)){ 

    foreach($_POST as $key => $val){ 
     if(empty($val)){ 
      // An empty field exists. Your action here. 
     } 
    } 
} 

Хотя стоит отметить, что если у вас есть Флажок на странице, не тикали, пустой $ _POST запись не получить отправить обратно, он просто не будет существовать.

Поэтому вам необходимо установить флажок с инструкцией if.

Например, имя флажок 'согласен'

if(!isset($_POST['agree'])){ 
    // Checkbox not ticked. 
} 
+0

Это относится и к выпадающим? или только флажки? Спасибо – somdow

2
$required_fields = array("name", "address", "phone", "email"); 
foreach ($require_fields as $field) { 
    if (!strlen($_POST[$field])) { 
     echo "$field cannot be empty"; 
    } 
} 

EDIT: вы можете получить массив $ _POST по

foreach ($_POST as $key => $name) { 
      $required_fields[] = "$key=$name"; 
     } 
+1

Спасибо, я думал о чем-то подобном, но, опять же, я сказал, что у меня было 100 переменных для формы (случайное число), тогда id все равно должен вручную вводить переменные в массив. Lazy я знаю, но .. ли цифра меньше кода лучше? лол спасибо – somdow

0

Проверьте каждый пост ключа

 
if(isset($_POST) && count($_POST)!=0){ 
    foreach($_POST as $key=>$val){ 
    if(empty($key)){ 
     /* do something */ 
    } 
    } 
} 
0

кстати. если вы

$fname = $_POST['name'] 

и поле не в форме вы получите

Примечание: Undefined индекс ...

лучше использовать

$fname = !empty($_POST['name']) ? $_POST['name'] : ''; 
Смежные вопросы