2010-02-15 50 views
1

我正在開發我一直在努力的CMS的後端。如何在保持順序元素ID的同時添加和刪除表格行?

我有一個HTML表,我希望用戶能夠添加和刪除行。每行將包含各種用戶輸入(文本框,複選框..)。然後,當用戶完成後,它將被保存在數據庫中。

我想知道什麼是最好的方法來處理它。

我猜的表是這樣的:

<table> 
<tr> 
<td><input name="name_1" type="text" /></td> 
<td><input name="address_1" type="text" /></td> 
</tr> 
<tr> 
<td><input name="name_2" type="text" /></td> 
<td><input name="address_2" type="text" /></td> 
</tr> 
<tr> 
<td><input name="name_3" type="text" /></td> 
<td><input name="address_3" type="text" /></td> 
</tr> 
</table> 

我想象我將有一段時間的夢魘與給每個元素每行中的ID會發生什麼,如果用戶刪除了第2行...所有的身份證後,它需要重新排序。

如何最好地添加和刪除行並使用JavaScript保持順序標識符?

回答

4

您應該使用name="address[]"等。這樣,當您發佈它時,服務器上的處理文件將按照相應的<input />出現在HTML代碼中的順序接收包含所有值的數組。

(我知道PHP會自動完成:變換輸入name S IN []成陣列結束不知道有其他語言。)

1

給每個<tr>一個唯一id=...屬性,以便您可以唯一標識行。然後在包含每一行順序標識的表中添加一列。當您需要重新排序時,因爲行已更改,請更新列但不包含id屬性。

0

你不想這樣做。 你想要做的是實際生成一個唯一的ID,在頁面上完全獨一無二的東西,不要試圖在數據庫中維護該ID。

你應該做什麼,當頁面被提交時,你抓住這些提交的ID,然後使用auto_increment讓數據庫分配ID。如果你需要複合鍵,那麼你可以使用複合鍵。

然後,當您再次加載表單時,說要進行編輯,您需要使用數據庫中的新ID。

我使用AJAX實現了類似的東西。我爲每個表單元素使用了random.uniqueID('prefix_'),然後當它被提交時,我將auto_increment分配給prefix_integer並返回一個JSON對象。然後,我可以遍歷該對象並確保我的表單隨後使用正確的ID進行更新。

這樣解釋時應該很簡單。

1

爲什麼這些ID需要連續?如果您需要訪問該行,您是否不使用可以返回行列表的jQuery等JavaScript庫,從中可以訪問第X行?

我想你會遇到同步問題,如果你試圖在它們中間刪除(或添加)一行時迭代地更新ID。

如果您使用服務器端語言,可以考慮DouweM的建議,該語言可以使用[]中的ID輕鬆構建數組。另一個選擇是爲它們的每個GUID分配ID,或者從您的後備數據庫中的關聯行中分配它們的主鍵。

相關問題