动态添加自定义输入字段并将其保存到数据库


Dynamically add custom input fields and save them to database

我想开发一个用户可以添加工单的Web服务。每个工单都有一个输入文本字段标题和一个文本区域描述。如果用户轻点保存按钮,数据将保存在 mysql 数据库中。

管理员有一个管理面板。他可以在此管理面板中添加或删除输入字段,以更改用户添加票证视图。例如:管理员添加了选择字段类别。您可以选择类别 ABC。如果选择类别 A,将有一个名为 animal 的新输入文本字段。如果选择类别 B,则不会发生任何反应。如果选择类别 C,将有 2 个新字段:文本字段和数字字段。数字字段为必填项。等等,等等。一周后,管理员可以删除一些字段,或添加类别或...总而言之,管理员可以添加和删除选择、文本、数字、密码,...字段添加到添加工单部分,其中包含关系、长度和要求。

我不知道如何构建数据库和保存数据。我想到像 mysql 表这样的东西,tickets titledescdata,并将一个 XML/JSON 字符串放入data字段,另一个表ticketFields name(类别、动物,...)、type(文本、数字,...)、required(是/否)、length(整数)、data(存储选定字段的数据)。问题是,这个模型中缺少关系。那么如何有效地保存这些数据呢?

关系模型可能如下所示:

门票
id PK

答:
票证 FK PK
fieldId FK PK
价值

字段
id PK,
名字
parentFieldId NULL FK,
parentFieldValue NULL,
类型
必填
最小空,
最大空,
范围空
(...其他"约束"字段,检查所选类型)

首先,显示父字段 ID 为 NULL 的字段。仅当给出父字段的答案时,才会显示设置了父字段 ID 的字段。如果给出了父字段的答案并且它等于父字段值,则显示设置了父字段 ID 和父字段值的字段。

根据字段的类型检查给定的答案(例如,如果类型为"数字",则答案必须是介于最小值和最大值之间的数字)。

您可以创建另一个包含 id、类别和字段的表供管理员使用,并使用公共 id 字段(最好是主键)将它们关联起来。现在,可以查询此表,以获取针对主表中特定 id 插入的新类别的引用。使用 javascript/jquery 为新字段动态创建 html 代码,并将它们显示在您的页面上。

假设您是用户选择选项"A",则可以查询新表以查看管理员是否针对选项"A"设置了任何字段。如果是,请检索这些字段并将其显示给用户。