2012-05-29 3 views
0

Этот вопрос строит off of this question I had earlier ... У меня есть php-форма, которая представляет штраф. Я добавляю функцию «ДОБАВИТЬ БОЛЬШЕ», которая снова добавляет весь этот набор полей.foreach не получает данные массива второй раз через

//access changes 
if ($reqtype=="accesschange"){ 
    $subject="FORM: Request Access Change(s) To Exisiting Folder"; 
    $note .="Full Path of folder to change access: $fullpath \n\n"; 
    if($userpermissiongroup != ""){ 
     $note .="User Permission Group to be changed: $userpermissiongroup \n"; 
    } 
    if($addreadaccess != ""){ 
     $note .="Additional users requiring read access: $addreadaccess \n"; 
    } 
    if($addauthoraccess != ""){ 
     $note .="Additional users requiring author access: $addauthoraccess \n"; 
    } 
    if($removeaccess != ""){ 
     $note .="Users to be removed from access: $removeaccess \n"; 
    } 
    $note .="Data Steward, Program Manager, Project Lead, or Supervisor who can authorize access changes: $supervisor \n\n"; 
    $note .="Phone number of approving official: $phoneapprover \n"; 

} 

Если пользователь щелкает больше, то это Еогеасп проходит через добавленных полей:

$addQues = array(
     "Full Path of folder to change access:", 
     "User Permission Group to be changed:", 
     "Additional users requiring read access:", 
     "Additional users requiring author access:", 
     "Users to be removed from access:", 
     "Data Steward, Program Manager, Project Lead, or Supervisor who can authorize access changes:", 
     "Phone number of approving official:",   
    ); 

foreach($_REQUEST['addfield'] as $k => $value) { 
     $note .= "$addQues[$k] $value"; 
    } 

Это займет 1-ые поля, то есть PHP добавил один ... потом 1-й Fieldset что добавляется через javascript (пользователь добавлен), но он не будет принимать 2-й или 3-й ... поэтому мои данные выглядят так:

Полный путь к папке для изменения доступа: t: \ this-drive User Разрешение Группа, которая будет chan ged: dv group Дополнительные пользователи, которым требуется доступ для чтения: jfla Дополнительные пользователи, которым требуется авторский доступ: azann Пользователи должны быть удалены из доступа: dlint Data Steward, Program Manager, Project Ведущий или Супервизор, который может разрешать изменения доступа: gpone Телефон номер одобрительных чиновник: 888-888-7777

Полный путь папки для изменения доступа: O: \ driveUser Разрешение группы быть изменена: odrive groupAdditional пользователей, которым требуется доступ для чтения: sjonesAdditional пользователей, которым требуется доступ к автору: pvalleUsers быть удаленный из доступа: kpowerData Steward, Менеджер программ, Проект Ведущий или Супервизор, который может разрешать изменения доступа: bzellPh один количество утверждающего должностного лица: 777-777-7777

я: \ новая я группа urusa mmalone jjon yokis 888-999-555

и: \ и группа phammer Midnite bmarley gdead 777-444-2222

Почему этот foreach не поднимает addQues() второй раз?

var_dump $ _REQUEST

массив (22) {[ "имя"] => строка (1) "" [ "электронная почта"] => строка (14) "" [ "добавить"] = > string (0) "" ["citystate"] => string (4) "," ["phone1"] => string (0) "" ["phone2"] => string (0) "" ["reqtype "] => string (12)" accesschange "[" newpath "] => string (0)" "[" usersaccess "] => string (0)" "[" ryesaccess "] => string (0)" " ["approvingofficer"] => string (0) "" ["sphone"] => string (0) "" ["comments"] => string (0) "" ["fullpath"] => string (14) "t: \ this-drive" ["userpermissiongroup"] => string (8) "dv" ["addreadaccess"] => string (9) "jflat" ["addauthoraccess"] => string (5) "bzat" ["removeaccess"] => string (5) "dlit" ["supervisor"] => string (6) "lnat" ["phoneapprover"] => string (12) "888-888-7777" ["addfield" ] => ar ray (21) {[0] => string (9) "o: \ drive" 1 => строка (12) "группа odrive" [2] => строка (6) "sjones" [3] => строка (6) «pvae» [4] => строка (7) «kpow» [5] => строка (8) «bdez» [6] => строка (12) «777-777-7777» [7] => string (7) "i: \ new" [8] => string (7) "i group" [9] => string (5) "urusa" [10] => string (7) "mmalone" [11] => строка (4) "jjon" [12] => строка (5) "yokis" [13] => строка (11) "888-999-555" [14] => строка (4) "u: \ "[15] => строка (7)" u group "[16] => строка (7)" phammer "[17] => строка (7)" midnite "[18] => строка (7)" bmarley " [19] => строка (5) "gdead" [20] => строка (12) "777-444-2222"} [ "c_id"] => строка (0) ""}

var_dump для информации, которую я получаю, будет: var_dumb ($ _ REQUEST ['addfield']

массив (21) {[0] => строка (9) "o: \ drive" 1 => строка (12) "диск группа" [2] => строка (6) "sjones" [3] => строка (6) "pval" [4] => строка (7) "kpow" [5] => строка (8) "bdezl" [6] => строка (12) "777-777-7777 "[7] => string (7)" i: \ new "[8] => строка (7)" i group " [9] => строка (5)" urusa "[10] => строка (7) «mmalone» [11] => строка (4) «jjon» [12] => строка (5) «yokis» [13] => строка (11) «888-999-555» [14] => строка (4) "u: \" [15] => строка (7) "u group" [16] => строка (7) "phammer" [17] => строка (7) "midnite" [18 ] => строка (7) "bmarley" [19] => строка (5) "gdead" [20] => строка (12) "777-444-2222"}

+0

Что такое вывод 'var_dump ($ _ REQUEST);'? – Viktor

+0

@Viktor Добавил var_dump. Есть некоторые значения в верхней части, которые не устанавливаются сразу, то есть ... имя, адрес электронной почты, добавить, городское состояние, телефон1, телефон2, reqtype ... Спасибо. – jasonflaherty

ответ

2

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

Возможно, вы неправильно указали имена полей формы. Если работает первый и второй набор полей, но не другие, то изначально в форме имеет другое соглашение об именах, чем те, которые добавлены динамически, а те, которые добавлены динамически, конфликтуют друг с другом.

Я рекомендую вам использовать Chrome для его проверки и открыть инструменты для разработчиков, чтобы увидеть живой HTML-код страницы, поскольку он обновлен Javascript.

Ваш последний вопрос имел форму поля, названные так:

<fieldset> 
    <input name="fullpath" (...) /> 
    <input name="userpermissiongroup" (...) /> 
    <input name="addreadaccess" (...) /> 
    (...) 
</fieldset> 

Если вы хотите несколько fieldsets, как это, вы должны использовать нотацию массива, как указано в ответе на ваш последний вопрос.

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

<fieldset> 
    <input name="fullpath[]" (...) /> 
    <input name="userpermissiongroup[]" (...) /> 
    <input name="addreadaccess[]" (...) /> 
    (...) 
</fieldset> 
<fieldset> 
    <input name="fullpath[]" (...) /> 
    <input name="userpermissiongroup[]" (...) /> 
    <input name="addreadaccess[]" (...) /> 
    (...) 
</fieldset> 

... данные будут представлены, но они не будут сгруппированы. Было бы лучше сгруппировать их как объекты;

<fieldset> 
    <input name="request[0][fullpath]" (...) /> 
    <input name="request[0][userpermissiongroup]" (...) /> 
    <input name="request[0][addreadaccess]" (...) /> 
    (...) 
</fieldset> 
<fieldset> 
    <input name="request[1][fullpath]" (...) /> 
    <input name="request[1][userpermissiongroup]" (...) /> 
    <input name="request[1][addreadaccess]" (...) /> 
    (...) 
</fieldset> 

Таким образом, данные с добавленными запросами сохраняются сгруппированными. Это решение требует, что вы правильно задали числовой индекс в javascript, добавляя набор полей.

+0

Это действительно удобный способ получить каждый набор отдельно, если это упрощает пост-обработку. Ницца! – Viktor

+0

ОК, это решение работает очень хорошо ... Я использовал это, чтобы получить данные ... Спасибо PHP Manual ... $ a = $ _ REQUEST ['request']; Еогеасп ($ в качестве $ значению1) {\t \t \t \t \t \t Еогеасп ($ значение1, как $ к => $ значение2) { \t \t \t \t эхо $ к; \t \t \t \t echo "$ value2
"; \t \t \t \t \t} – jasonflaherty

1

Как вы можете видеть на выходе var_dump, addfield - это поле типа массива с 21 элементом в нем. В частности, он содержит три набора значений полей, которые вы упомянули ранее, но не организованы каким-либо образом. Вот почему вы получаете тексты только для первого набора (значения 0 ... 6 для $k) при прохождении через $_REQUEST['addfield'].

Если бы я был вами, я бы назвал динамически добавленные поля так же, как и статические поля, т.е. userpermissiongroup[], addreadaccess[] и т. Д., А затем обрабатывать все поля как массивы.

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