我想开发一个用户可以添加门票的网络服务。每张票都有一个输入文本字段 title 和一个textarea 描述。如果用户点击 save 按钮,数据将保存在mysql数据库中。
管理员有一个管理员面板。他可以在此管理面板中添加或删除输入字段,以更改用户的添加票证视图。 例如:管理员添加了一个选择字段类别。您可以选择类别 A , B 或 C 。如果选择类别A,则会有一个名为 animal 的新输入文本字段。如果选择B类,则不会发生任何事情。如果选择类别C,则会有2个新字段:文本字段和数字字段。数字字段是必需的。等等等等。一周后,管理员可以删除一些字段,或添加类别或...总之,管理员可以添加和删除选择,文本,数字,密码,...字段到添加票证有关系,长度和要求的部分。
我不知道如何构建数据库和保存数据。我考虑使用tickets
,title
和desc
之类的mysql表data
,并将XML / JSON字符串放到data
字段和另一个表中ticketFields
name
{类别,动物,......),type
(文字,数字,...),required
(是/否),{{1 }(int),length
(用于存储选择字段的数据)。问题是,该模型中缺少关系。那么如何才能有效地保存这些数据?
答案 0 :(得分:1)
关系模型可能如下所示:
<强>票务强>:
id PK
<强>答案强>:
ticketId FK PK
fieldId FK PK
值
字段强>:
id PK,
名,
parentFieldId NULL FK,
parentFieldValue NULL,
类型,
需要
min NULL,
最大NULL,
范围NULL
(...其他“约束”字段,检查选择类型)
首先,显示parentFieldId为NULL的字段。仅当给出父字段的答案时,才会显示具有parentFieldId设置的字段。如果给出了父字段的答案并且它等于parentFieldValue,则显示设置了parentFieldId和parentFieldValue的字段。
给出关于字段类型的答案(例如,如果类型为“数字”,则答案必须是最小值和最大值之间的数字。)
答案 1 :(得分:0)
您可以创建另一个包含id,类别和字段的表供管理员使用,并使用公共ID字段(最好是主键)将它们关联起来。现在,可以查询此表以引用针对主表中的特定id插入的新类别。使用javascript / jquery为新字段动态创建html代码并在页面上显示它们。
假设您的用户选择了选项&#39; A&#39;,则可以查询新表以查看管理员是否根据选项“A&#39;”设置了任何字段。如果是,请检索这些字段并将其显示给用户。