【问题标题】:How to add extra fields to form depending on category chosen?如何根据选择的类别添加额外的字段?
【发布时间】:2013-09-11 20:40:51
【问题描述】:

我有一个包含类别的新闻网站:

  • 课程
  • 工作
  • 新闻
  • 帮助请求

类别用于定义“帖子”

任何人都可以使用通用的提交表单提交选择任何类别的帖子。但是,“课程”和“工作”必须有“开始”和“结束”日期,而“新闻”和“帮助请求”不需要这些字段。

使用相同的提交表单获取这些数据的最佳做法是什么?

最好检查新帖子的类别,然后以新的形式请求开始/结束日期以及特定于该类别的任何其他数据?

或者允许数据在不需要的地方作为空值通过?您将如何检查用户提交的类别?

【问题讨论】:

  • 我想我会让用户从下拉菜单中选择类别,然后使用 jQuery 检查该值并根据该选择显示特定的文本字段。

标签: php mysql database relational-database


【解决方案1】:

您可以提供所有表单并使用隐藏选项隐藏当时不相关的表单。当您选择带有控件的类别时,您可以使用一些 JavaScript 来隐藏不相关的控件并使其他控件可见。

在任何情况下,处理内容的脚本都应该足够智能,只处理相关数据。所以如果用户输入了一些不相关的数据,就应该丢弃。

【讨论】:

  • 很好,这是常见的做法吗?现在看来是常识,但我从来没有这样做过
  • 另外,您会将这些额外字段(开始/结束日期)添加到“课程”表中,还是将其包含在更通用的帖子表中?
  • @gray 是的,这很常见。您不应该在数据库表中放置不相关的字段。
  • 如果我没记错 Boyce-Codd 范式 (BCNF) 的定义,我会生成下面的表格:PostCategory1Category2。如果您的帖子属于第 1 类,则该表中的标识符应链接到该帖子。这很有用,因为您减少了重复(和 NULL)数据的数量
  • 如果已经有一个包含类别名称(或课程名称)的类别表怎么样。如果我要添加一个“课程”表,它还需要一个课程名称,哪个是重复的?在这种情况下你会怎么做?
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多