У меня есть форма, которая выглядит так:
<label for="fullpath"><span class="required">*Full Path of folder to change access:</span></label> <input name="fullpath" id="it10" type="text" size="50" maxlength="50" /> <br /> <small>Example: g:\A\Folder or j:\Your\Folder</small><br /> <div class="bgdiff"> <label for="userpermissiongroup">User Permission Group to be changed:</label> <input name="userpermissiongroup" type="text" id="it11" size="50" maxlength="50" /> <small>If Known...</small></div> <br /> <label for="addreadaccess">Additional users requiring read access:</label> <input name="addreadaccess" type="text" id="it12" size="15" maxlength="15" /> <br /> <small>AD Username</small><br /> <div class="bgdiff"> <label for="addauthoraccess">Additional users requiring author access:</label> <input name="addauthoraccess" type="text" id="it13" size="12" maxlength="12" /> <br /> <small>AD Username</small></div> <br /> <label for="removeaccess">Users to be removed from access:</label> <input name="removeaccess" type="text" id="it14" size="12" maxlength="12" /> <br /> <small>AD Username</small><br /> <div class="bgdiff"> <label for="supervisor"><span class="required">*Data Steward, Program Manager, Project Lead, or Supervisor who can authorize access changes:</span></label> <input name="supervisor" type="text" id="it15" size="30" maxlength="30" /> <br /> <small>AD Username</small></div> <br/> <label for="phoneapprover"><span class="required">*Phone number of approving official: </span></label> <input name="phoneapprover" type="text" id="it16" size="30" maxlength="30" /> <br /> <small>999-999-9999</small><br /> </fieldset> </div>
Я хотел бы предоставить пользователям возможность добавить всю эту информацию в эту форму более чем 1 раз перед отправкой. (скажем, 10x макс) Я пробежал пару идей через голову. 1 использует Javascript для создания новых полей, а затем каким-то образом разбирает их с моим php-скриптом. 2 ставится, скажем, 10 фрагментов кода, как и в приведенной выше форме кода, и скрыть их до тех пор, пока пользователь не нажмет ADD ДРУГОЙ.
Каждый вход должен быть уникальным, поскольку я представляю эту информацию, подумал про простой скрипт PHP $ _REQUEST. Я понимаю, как это сделать с помощью 1 ввода и для каждого цикла, но я не уверен, как заставить его работать с таким большим количеством входов, ярлыков и т. Д.
<?php foreach($_POST['newdata'] as $value) { echo "$value <br />"; } ?>
У кого-нибудь есть предложения по наилучшему способу этого? Я не уверен, что добавление его формы через JS – лучшая идея, поэтому просто отображение новой информации из скрытого div кажется более быстрым и легким …
Если вы добавите []
в свои имена полей формы, PHP примет эти поля и превратит их в массив, например
<input type="text" name="field[]" value="first" /> <input type="text" name="field[]" value="second" /> <input type="text" name="field[]" value="third" />
создаст следующую структуру $ _POST:
$_POST = array( 'field' => array( 0 => 'first', 1 => 'second', 2 => 'third', ) );
Альтернативой является добавление инкрементирующих чисел к каждому имени поля при дублировании существующих наборов полей для каждого нового блока. Это обеспечивает хорошее разделение между блоками и позволяет гарантировать, что связанные поля имеют один и тот же числовой тег, но это усложняет обработку.
Это не так сложно: основная идея заключается в использовании идентификаторов для каждой итерации, поэтому ваши входы будут иметь уникальные имена и будут обрабатываться без проблем
for ($i=0;$i<10;$i++){ echo "<input name='removeaccess' type='text' id='it14_{$i}' size='12' maxlength='12' />"; }
Таким образом, вы берете свой код текущего набора входов с помощью таблиц и добавляете идентификаторы имен имен, сформированные на каждой итерации круга. Будьте осторожны с '
и "
!