2015-01-07 67 views
2

我允許用戶使用任意數量的輸入和他們選擇的元素創建自定義表單。然後,我希望用戶能夠將該表單保存爲各種模板,以便其他用戶可以使用該模板創建自己的自定義表單。將HTML表單模板存儲在數據庫中

可能有數百個不同的文章類型,每一個不同的元素等

什麼可能是在PHP和MySQL來完成這一任務的最好方法是什麼?

我想只存儲自定義窗體的HTML,一旦用戶在數據庫中創建它。因此,如果另一個用戶想要使用該模板,我只需從數據庫中檢索該HTML並將其呈現給新用戶。

這是最好的方法嗎?許多網站都做類似的事情(例如Wufoo),我只是將這種原始html存儲在數據庫中似乎有點奇怪。

+3

爲什麼你不能只儲存與名稱/標籤/默認值等輸入的數量和類型? –

+0

這是一個選項,但對於每個「模板」可能有幾十種不同的變體,並以有組織的方式從數據庫中存儲和讀取它們,以便可以將另一個表單構造爲完整的重複,而不僅僅是複雜一個包含表單整個html的數據庫條目。但我不確定嗎?這是我想問的:-) –

回答

4

無論何時你正考慮將HTML存儲到數據庫中,你的行爲可能是,可能是

如果您想對所有表單進行廣義結構更改會怎麼樣?你突然必須通過所有記錄並做出改變。

取而代之的是,考慮使用數據庫只是爲了存儲必要的裸骨以後重新創建表格

也許你會有一個數據庫表來存儲表單,另一個表與它存儲每個字段定義的一對多關係,等等。

因此,您的數據庫將存儲輸入數量,類型,標籤,驗證要求 - 無論如何。然後你會有一個大腳本來匆匆穿過這些,然後 - 重建表單。

這種方法:

  • 爲您提供了一般的HTML結構
  • 更緊密地堅持正常化您的數據庫數據的概念
  • 堅持保持獨立的數據和結構的概念更大的控制權(即HTML)
  • 削減下來的數據量存儲(不重複的標籤,空格等)
1

IMO,最好的方法是將表單數據字段存儲在數據結構(例如JSON)中並從中構建您的html。如果需要,您可以選擇緩存html以達到更快的渲染目的。

如果執行的很好,這樣做的好處是可以保持關於表單應包含的數據的一致格式的數據,這意味着如果您希望更新html呈現邏輯,您將能夠更新所有html立即存儲表單(或者簡單地清除緩存的html,下一次呈現特定表單時緩存新的HTML),而不是嘗試將解析不一致保存的HTML數據並嘗試全部更新它們。

請注意,這可能會稍微降低用戶獲得的靈活性,因爲您必須將他們的選項限制爲有限的可用添加項,但長期維護的好處通常會大大超過這個缺點。