将表结构化表单数据存储到数据库中 - 正确的方法吗?

时间:2012-11-01 09:12:38

标签: php mysql database-design

这将是一个长篇大论,所以请耐心等待。我非常擅长PHP,但我在数据库设计方面的知识很差。我正在努力,因为我已经意识到,在处理应用程序时,掌握设计数据库是最重要的,如果你掌握了它,事情会变得如此简单。这个线程的开始也是因为我对数据库交互知之甚少。

我基本上有大约40种形式,其结构类似于下面给出的图像:

Form structure

列和行的数量因形式而异,但它们或多或少遵循如上所示的类似结构。

我计划实现的目标

  • 使用单个/相同的php页面进行处理(即插入数据) 所有40个表格。换句话说,我打算对所有表格使用相同的<form action="process.php">
  • 避免硬编码;将代码保持在process.php尽可能多的动态 可能的。

路障

  • 每种形式的参数数量各不相同,所以我需要弄清楚 找出每个表单中存在的行数的方法。
  • 发现难以确定如何命名元素(无线电 正在使用的按钮,复选框,下拉列表,textareas,文本框等) 在表格中。
  • 我无法弄清楚如何继续进行 插入。一次插入一行似乎是合适的,但是 我怎么做到这一点?例如,如果我在第一个中使用循环 应插入与Ambiance相关的迭代数据。在里面 应插入与TV Room相关的第二个循环数据,依此类推。 问题是如何相应编码?

我的精神

  • 表格栏目(参数,符合要求,观察, status,remarks)成为MySql表的字段。

  • 然后使用循环在表格中一次插入一行。

  • 使用数组命名表单中使用的元素。例如, 氛围[要求],氛围[观察],氛围[状态], 第一行和第二行中元素的氛围[备注] 房间[要求],房间[观察],房间[状态],房间[备注]为 第二行等等。然后插入可以在一行中完成 使用INSERT INTO tablename (implode(',', array_keys($ambiance))) VALUES (implode(',', $ambiance))

这不是什么

  • 要求提供/邮寄代码。

  • Give me teh codez不是我的经营方式。我只是在寻求 关于如何完成任务的说明。

这是什么

  • 寻求建议。

  • 确定我是否朝着正确的方向前进。

  • 询问是否有其他方式。

1 个答案:

答案 0 :(得分:1)

我做过类似但不完全相同的事情。我使用了这两个表:

    • ID
    • 姓名(例如反馈,评论,调查)

  • FormFields **
    • ID
    • FormID
    • 标题(例如姓名,公司,地址)
    • SubCaption(例如输入您的全名)
    • 必需
    • DataType(例如整数,数字,字符串,电子邮件)
    • 的MaxLength

**查看数据库表的架构以获取更多想法。

在您的情况下,您需要另一对表:

  • FormSubmission
    • ID
    • 日期

  • FormSubmissionValues
    • ID
    • FormSubmissionID
    • FormFieldID(可用于推断FormID,或者您可以在FormSubmission表中添加FormID)
    • 值(足以容纳任何值的字段)

有几次捕获。我会记下一些:

  • UI需要根据数据类型而变化(整数/数字的小10个字符输入,布尔值的复选框,文本的textarea)
  • 不确定如何处理列表框。也许你需要另一张表
  • 您无法正确使用索引,因为所有内容都存储在通用文本字段中
  • 客户端验证可能但很难
  • 表格必须非常通用。根据我的经验,这需要额外的努力来确保 x 适用于所有 y