2011-03-23 80 views
1

我需要实现具有“其他”选项的选择框。如果选择此选项,用户应能够在文本字段中键入不同的选项。我关心的是如何将保存到数据库中。我正在寻找独特而有效的方法来处理这个实现。在选择框中处理“其他”选项的最佳方式是什么?

我相信我最后一次实现这个我有两列在我的表中,一个用于选择框和一个用于文本字段输入。

任何人都可以想到一个更好的方法来做到这一点?

+0

为什么文本框的值不能在同一列?似乎你可以让表单处理程序在特定条件下使用文本框的值而不是选择框的值。除非我错过了一些东西。 – 2011-03-23 21:10:21

+0

@Fareesh Vijayarangam你说得对,我可以获取文本框的值并将其存储在数据库中,但是当该用户再次编辑该字段时,选择框将不会显示它,因为选择框选项从另一个数据库表中提取。 – Pzanno 2011-03-23 21:29:04

+0

在编辑方法的特定情况下,您可能会编写一个预先选择“其他”的小代码,并用数据库中的数据填充文本框。我想,当你使用两列时,最终你会最终沿着这段代码的行写一些东西。 – 2011-03-23 21:31:02

回答

1

假设您有一些驱动您的选择框选项的元数据表,您可以添加逻辑,将新的“其他”选项插入到该表中,然后在主表中引用新添加的项的主键存储表单输入的数据。

如果您不希望每次“其他”提交都混淆元数据表,那么我相信您的方法很好 - 只是一个单独的可存储“其他”值的可空列。

+0

我对这个答案很感兴趣。我想我会再探索一下,看看它是否值得我的项目。这将是一个很好的方式来填充选择框选项和更多来自用户,但垃圾邮件条目呢? – Pzanno 2011-03-23 21:30:52

+0

对,呃..我确定有解决方案可以通过表单提交(和重复)来最小化垃圾邮件条目。谷歌周围。 – Kon 2011-03-23 23:41:10

2

我将有一个参考表,用字段填充您的选择框:id,item,primary。其中'primary'是一个bool,指示它是否应该包含在你的下拉列表中。

然后,当用户输入其他项目时,这些项目将被添加到您的参考表中,'主'字段为false。

这个实现的好处在于它在概念上是干净的 - 只有一个字段存储您的项目值,并且如果您的许多用户正在为其他人添加特定字段,则只需将“主要”布尔为真,它会出现在你的主下拉列表中。

相关问题