2010-08-02 62 views
3

我設計了一個包含動態內容的表單。處理動態表單內容的更好做法是什麼?

例如, 表單具有Paper_Name的文本字段和Paper_Link的文本字段。 用戶最多可以添加10個紙張名稱和紙張鏈接。

每個紙張名稱和造紙環節的ID如下:

papername01,paperlink01,...,papername10,paperlink10。

這些ID是由JavaScript動態創建的。換句話說,如果用戶沒有單擊「添加紙張」按鈕並提交表單,則服務器將接收的唯一字段是paperlink01和papername01。

現在,問題什麼是更好的做法來設計服務器PHP腳本來處理提交的表單內容。

  1. 使用Ajax表單插件?

  2. 使用常規表單提交併遍歷所有變量並查看是否設置了它們中的任何一個?

  3. 使用JSON數據格式?

是的,這個問題與服務器和客戶端都有關係。我想知道最佳做法並相應地更改我的客戶。 請幫忙,謝謝您

的外形設計看起來如下:

<div id="divDummy001"> 
<div id="paperTitle001Fld"> 
    <label for="papertitle001">Title of Paper 001</label> 
    <div> 
    <input type="text" size="16" value="" id="papertitle001" name="papertitle001"/> 
    </div> 
</div> 

<div id="paperURL001Fld"> 
    <label for="paperurl001">Paper Link 001</label> 
    <div> 
    <input type="text" size="96" value="" id="paperurl001" name="paperurl001"/> 
    </div> 
</div> 
</div> 

當用戶單擊Add按鈕,一個新的div將唯一的區別被創建時,該ID將增加1.

回答

4

使用數組。創建名稱爲papername[1], papername[2]的文本字段,然後它們將顯示爲PHP腳本中的數組。

+0

你好MCHL, 如果我使用papername [1]爲我的第一個紙張名稱,我有使用foreach函數的問題嗎?因爲它從0開始? 謝謝 – q0987 2010-08-02 19:12:02

+0

不,你沒有。 foreach從數組中的第一個元素開始。不關心它有什麼關鍵。 – Mchl 2010-08-02 19:25:42

3

您可以使用JS名稱作爲[]的元素。對於它是如何正常進行的說明,請參見http://www.spsu.edu/cs/faculty/bbrown/papers/php2.html

<form method="post"> 
I speak the following languages: 
<input type="checkbox" name="lang[ ]" value="en">English<br /> 
<input type="checkbox" name="lang[ ]" value="fr">Français<br /> 
<input type="checkbox" name="lang[ ]" value="es">Español<br /> 
</form> 

在接收代碼:

<?php 
$langs = $_POST['lang']; 
// Note that $snacks will be an array. 
foreach ($langs as $lang) { 
    echo "$lang<br />"; 
} 
?> 

你也可以命名的文本輸入這樣一來,使用<input type="text" name="papername[]">幾次。然後你可以把這些名字作爲一個數組來處理。

請注意,雖然:ID必須是唯一的,名稱不必。你應該得到HTML像

​​
5

爲什麼不發佈陣列

做一個香草形式提交,然後在服務器端,您可以像其他任何PHP數組一樣遍歷POST ed數組。

你要做的是標有[]定義HTML元素name屬性:

<input type="text" name="papername[]" value=""/> 

你的PHP應該是這個樣子:

<?php 
    if(isset($_POST['papername'])) { 
     foreach($_POST['papername'] as $papername) { 
      //do something with $papername... 
     } 
    } 
?> 
+0

Hello Jacob, 謝謝你的評論。 如果我理解正確,通過使用papername [],我將失去用戶提交的訂單。我需要保持不同論文之間的差異。 – q0987 2010-08-02 18:20:46

+0

@ q0987,你可以把鍵放在數組中,比如'papername [1]',然後'papername [2]'等等。這可以讓你保存原始鍵,從而保留原來的順序。 – Charles 2010-08-02 18:37:42

相關問題