2014-12-26 5 views
0

У меня длинная форма со слишком большим количеством полей. Я хотел создать динамическую форму, что означает, что требуемые поля различаются каждый раз по желанию. Поэтому я помещаю рядом со всеми полями формы и предоставляю этот код динамически выбирать, какие поля требуются, и проверить его, поэтому, когда пользователь отправляет форму, текст динамической ошибки появляется только рядом с выбранными обязательными полями. но результат отличается от ожидаемого. Ошибка PHP отображается рядом со всеми полями не только в желаемом массиве. Пожалуйста, обратитесь за помощью.Динамические обязательные поля в форме

$required = array('cm_name', 'cm_mobile', 'cm_mail', 'cm_dob', 'cm_income', 'cm_country'); 

if(isset($_POST['submit'])) { 

foreach($required as $field) { 
if (empty($_POST[$field])) { 
    $err_req = "* Required Data"; 
    $valid = true; 
    } else { 
    $err_req = ""; 
    $valid=false; } 
} 

} 

ответ

0

Что вы здесь делаете, это изменение значения переменной внутри вашего цикла foreach. Когда вы выходите из цикла, у вас либо есть значение, назначенное вашей переменной ($ err_req = "* Required Data"), либо вы не ($ err_req = ""). Это приведет к тому, что все ваши поля будут иметь текст «Обязательные данные» рядом с ним, или ни один из них не будет иметь его. Это связано с тем, что значение вашей переменной перезаписывается каждой итерацией внутри вашего цикла.

Что вы хотите сделать это, выполняет операцию печати или не печатает сообщение об ошибке рядом с каждым из полей ввода формы внутри вашего цикла или использует уникальный идентификатор для каждого места, где вы хотите отобразить ошибку. достигнутым несколькими способами, можно было бы назначить идентификатор каждому из вашего пустого сообщения об ошибке рядом с вашим полем ввода. Для простоты идентификатор может соответствовать вашим значениям требуемого массива. Если в вашем поле $ нет значения, вы должны измените значение вашего текста ошибки с соответствующим идентификатором.

1

Я написал эту функцию

function checkrequired($field,$req_fields) 
{ 
    if(in_array($field,$req_fields)) { 
     if(isset($_POST[$field]) && empty($_POST[$field])) { 
      echo "* Missing Data"; 
     } 
    } 
} 

и поставь рядом с каждым полем этой строки

<?php checkrequired("cm_phone",$req_fields); ?> 

И определяется, какие поля необходимы как этот

$req_fields = array('cm_name', 'cm_mobile', 'cm_mail', 'cm_dob', 'cm_income', 'cm_country', 'security_code'); 
+0

Это работает так же, Амр Али! – Marta

Смежные вопросы