1

I have a form that looks like so:

<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>

I would like to give users the option to add all of this info to this form more than 1x before submitting. (say 10x max) I have run a couple ideas through my head. 1 is using Javascript to create the new fields and then parse them with my php script somehow. 2 is put say 10 code snips just like the form above in the code and hide them until the user clicks ADD ANOTHER.

Each input needs to be unique as I am submitting this info thought a simple $_REQUEST php script. I understand how to do this with 1 input and a for each loop, but am not sure how to make it work with such a large amount of inputs, labels, etc...

<?php
foreach($_POST['newdata'] as $value) {
echo "$value <br />";
}
?>

Anyone have some suggestions on the best way to go about this? I am not sure adding his form via JS is the best idea, so just displaying the new info from a hidden div seems quicker and easier...

2 Answers 2

3

If you append [] to your form field names, PHP will take those fields and turn them into an array, e.g.

<input type="text" name="field[]" value="first" />
<input type="text" name="field[]" value="second" />
<input type="text" name="field[]" value="third" />

would produce the following $_POST structure:

$_POST = array(
    'field' => array(
         0 => 'first',
         1 => 'second',
         2 => 'third',
    )
);

The alternative is to append incrementing numbers to each field name, as you duplicate the existing field sets for each new block. This provides a nice separation between blocks and allows you guarantee that related fields have the same numerical tag, but it does complicate processing.

Sign up to request clarification or add additional context in comments.

2 Comments

I wouldn't say that processing of fields with IDs is complicated - in fact it can be ever more easy, because no additinal processing of arrays will be nessesary.
I am trying to get each of these array outputs to contain a string in front of each result. So 0 would have "This is the: " [0] or "This is the: first" etc... for each result. Any suggestions?
0

It's not so difficult: main idea is to use IDs for each iteration, so your inputs will have unique names and will be processed without problems

for ($i=0;$i<10;$i++){
   echo "<input name='removeaccess' type='text' id='it14_{$i}' size='12' maxlength='12' />";
}

So, you take your code of current set of inputs with lables and add to input names IDs, formed on each circle iteration. Be carefull about ' and "!

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.