2012-11-01 58 views
1

這將是一個很長的閱讀,所以請忍受我。我非常擅長PHP,但是我在數據庫設計方面的知識很差。我正在研究它,因爲我已經意識到,在設計數據庫時,掌握應用程序是最重要的事情,如果掌握了它,事情會變得如此簡單。這個線程的開始也是因爲我對數據庫交互的瞭解太少。將表結構化表單數據存儲到數據庫 - 正確的方法來做到這一點?

我基本上圍繞40形成下面給出其結構類似於圖像:

Form structure

的列數和行變化從一種形式到另一種,但是它們或多或少遵循相似的結構如上所示。

WHAT我打算ACHIEVE

  • 使用單一/相同PHP頁面來處理(即,將數據插入數據庫 )中的所有40所形成。換句話說,我打算對所有表格使用相同的<form action="process.php">
  • 避免硬編碼;保持process.php中的代碼與 一樣多。

路障

  • 的每個形式參數的數量而變化,所以我需要找出一種 方式發現存在於每個表格的行數。
  • 難以決定如何命名 中的元素(無線電 按鈕,複選框,下拉列表,文本框,文本框等)。
  • 我在試圖找出如何繼續使用 插入時遇到問題。一次插入一行似乎是合適的,但 我該如何實現這一目標?例如,如果我使用循環,則應在第一個 迭代中插入與Ambiance相關的數據。在 應該插入與TV Room有關的第二個循環數據等等。 問題是如何編碼?

我所記住

  • 形式的列(參數符合要求,觀察, 狀態,備註)成爲MySQL表的字段。

  • 然後使用循環一次在表格中插入一行。

  • 使用數組命名錶單中使用的元素。例如, 氛圍[要求],氛圍[觀察],氛圍[狀態], 氛圍[備註]爲第一行元素和 房間[要求],房間[觀察],房間[狀態],房間[備註]爲 第二行依此類推。然後插入可以在一個單一的線路 通過使用INSERT INTO tablename (implode(',', array_keys($ambiance))) VALUES (implode(',', $ambiance))

做什麼這不是關於

  • 詢問供應/後置碼。

  • Give me teh codez是不是我的經營方式。我只是尋求 關於如何處理任務的指示。

這是怎麼回事

  • 問計建議。

  • 確定我是否正朝着正確的方向前進。

  • 詢問是否有其他方法。

回答

1

我做了類似的事情,但不完全一樣。我用這兩個表:

  • 形式
    • ID
    • 名稱(如反饋,意見調查)

  • FormFields **
    • ID
    • FormID
    • Caption(例如,姓名,公司,地址)
    • SubCaption(例如:輸入您的全名)
    • 要求
    • 數據類型(如整數,數字,字符串,電子郵件)
    • 的MaxLength

**查看數據庫表的模式以獲取更多想法。

在你的情況,你需要另一對錶:

  • FormSubmission
    • ID
    • 日期

  • FormSubmissionValues
    • ID
    • FormSubmissionID
    • FormFieldID(可用於推斷FormID也可以在FormSubmission表中添加FormID)
    • 值(一個場足夠大以容納任何值)

有幾個漁獲。我會記下幾個:

  • 的UI需要根據數據類型
  • 不知道如何處理列表框(整數/數字,複選框布爾,textarea的文字小10字符輸入)改變。也許你需要另一個表這個
  • 不能使用正確,因爲一切都存儲在一個普通的文本字段
  • 客戶端驗證是可能的,但很難
  • 的表需要非常通用的指標。根據我的經驗,這需要額外的努力來確保x適用於所有
+0

非常有見地。感謝回覆 – asprin

相關問題