我想創建一個基本的表單生成器。因此,用戶可以在某種CMS系統中單擊HTML表單。我仍然在爲此進行數據庫設計,當涉及到複選框時,我有一個問題。設計一個「表單引擎」的數據庫
我的數據庫設計是這樣的:
領域
pk_field_id | field_type | field_name | default_value
1 | textfield | text1 | Some default value
2 | textfield | text2 | NULL
3 | radio | radio1 | NULL
4 | checkbox | check1 | NULL
所以這基本上我如何保存所選字段。當我讀這張表時,我可以通過switch
聲明並讀取field_type
的值,所以我知道要渲染哪種字段。
但這並非全部。我還有一個表格,其中包含像「單選按鈕」這樣的元素的「值」。
fieldvalues:
fk_field_id | label | value
3 | Radio 1 | radio1
3 | Radio 2 | radio2
4 | Check 1 | check1
4 | Check 2 | check2
所以,現在當我讀表fields
我可以JOIN
表fieldvalues
和方法,我知道哪些選項屬於radio
什麼給checkbox
。這一切似乎工作正常。
現在棘手的部分。當表單生成時,我還需要一個地方來保存輸入的值。 所以我的Form Engine
自動創建一個額外的表。它爲fields
表中的每個field_name
創建一個列。因此,在這種情況下,動態創建的表看起來像這樣:
myForm的
pk_form_id | text1 | text2 | radio1 | check1 | language_id
現在,當用戶輸入數據時生成的HTML表單,我可以很容易地保存所有輸入的數據。因爲文本字段只需要一列。分組單選按鈕最終只提交一個值。但是一組複選框當然可以在檢查兩個或多個複選框時提交多個值。
現在我的問題是,我該如何保存到數據庫?我認爲將多個值存儲在一列中並不是一個好主意,並由一個特定字符分隔。因爲這也使得難以執行搜索。
我最初認爲這是一個好方法,因爲我可以用簡單的SELECT ... WHERE
查詢輕鬆地從myform
表中拉出一行。
因此,無論如何,我不知道這是否是一個好的設置...以及如何處理複選框可以提交的多個值?
對此有何想法?
http://stackoverflow.com/a/5858666/1114171 –
哇,它就像你正在創建一個數據庫,在數據庫中! –