2012-05-26 35 views
1

我有一個看起來像這樣一種形式:在提交之前添加多個輸入文件PHP的形式提交

<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倍。 (比如最大10倍)我已經通過我的頭腦運行了一些想法。 1是使用JavaScript來創建新的字段,然後用我的PHP腳本以某種方式解析它們。 2在代碼中放置10個代碼,就像上面的表單一樣,並隱藏它們,直到用戶單擊ADD ADDOT。

每個輸入都需要是唯一的,因爲我提交這個信息的時候想到了一個簡單的$ _REQUEST php腳本。我知道如何用1個輸入和每個循環做到這一點,但我不知道如何使它有如此大量的投入,標籤等工作......

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

任何人有一些建議最好的方式去做這件事?我不確定通過JS添加他的表單是最好的主意,所以只是顯示來自隱藏div的新信息似乎更快更容易...

回答

3

如果您將[]附加到您的表單字段名稱,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', 
    ) 
); 

另一種方法是遞增的數字追加到每個字段的名稱,如您複製現有的字段設置爲每一個新塊。這在塊之間提供了很好的分離,並且可以保證相關字段具有相同的數字標籤,但它確實使處理複雜化。

+0

我不會說使用ID處理字段很複雜 - 事實上它可以變得更加簡單,因爲不需要對數組進行任何附加處理。 – DaneSoul

+0

我試圖讓每個這些數組輸出包含每個結果前面的字符串。所以0會有「這就是:」[0]或者「這是第一」等等。有什麼建議麼? – jasonflaherty

0

這不是那麼難:主要想法是爲每個迭代使用ID,所以你的投入將具有唯一的名稱,沒有問題

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

所以將被處理,你把你的當前設置與標貼輸入的代碼,並添加到輸入名稱標識,形成每一個圓上迭代。要小心'"