2010-07-02 48 views
0

我正在構建一個網站,並且需要允許用戶能夠創建自定義表單。我遇到的問題是如何存儲這些表單中的數據。由於它們是用戶創建的字段,因此數據庫中不會有相應的字段。什麼是解決這個問題的最好方法?我假設修改表是這樣做的不正確的方式。將所有的數據放入一個數組,序列化,然後將其存儲在一個字段中是一種好方法?允許創建自定義表單並存儲數據

回答

1

將將所有數據到一個數組,序列它,然後將它存儲在一個領域是一個好方法?

雖然這會存儲的數據,它不會使單個元素可查詢。這是一個非常糟糕的長期的想法。

看看entity-attribute-value模型。您應該能夠使用由一些嚴格的外鍵檢查備份的EAV來表示表單中的字段,甚至填充到表單中的數據。

現在,EAV並不完美。由於MySQL的限制,創建某些查詢可能很困難,但這並不是外部代碼無法修復的問題。它仍然比序列化數據好十倍。

+0

謝謝。這似乎是一個很好的開始。我將學習一些東西,這是項目的總體目標。再次感謝! – birderic 2010-07-06 19:56:40

0

也許你可以序列化整個表單的值,並將它存儲在一個blob到數據庫中。

0

也許你可以提供一個堅實的表單生成器框架(或修改現有的解決方案),其中每個用戶創建現場由您這樣的控制:

//input elements named by a custom namespace: 
`<input type="text" name="mycustomelement[user_defined_name]" />` 

和你去:當用戶提交表單的時候,可以捕獲所有'mycustomelement'元素,然後您可以序列化它以存儲在數據庫中。

0

我將存儲的表用戶窗體{ID,用戶,索引,字段名,字段類型}然後userformresponses {ID,userformid,字段名,響應}

相關問題