【发布时间】:2013-08-24 02:19:09
【问题描述】:
我正在开发一个网站,我想向其中添加一个新部分,其中包含用于存储该数据的高级表单。将有大约 20-30 个字段,其中很少有多个选项复选框表示这些选项提交时的 eq 数组值。该字段将具有固定数量的选择,这些选择永远不会改变,也永远不会添加新的选择。例如字段一将有choice1、choice2、choice3。字段 2 将有 10 个,字段 3 将有 5 个。
为它们创建单独的数据库表并通过其 id 引用它们不是有点矫枉过正吗?将它们保存为例如 varchar 字段 eq implode 下的逗号分隔值并在我每次想要访问或存储新值时将它们 eplode 保存不是更好吗?
我也很难弄清楚以后如何使用它。因为如果我将它们保存为单独的表并通过其 id 引用它,那么我的查询将输出这些字段的每个组合。例如,这将导致一条记录有 150 行。对于这个子多个值,我如何将它转换回具有嵌套数组的单个数组值?例如'id'=>1, 'title' => 'Lorem Ipsum', 'choices' => array('choice2','choice2').....
更新:为了更好地说明我想要做什么,我在这里创建了一个简化的表单模型 -> http://www.anony.ws/i/2013/08/13/SsD5A.gif 它不是我将使用的实际表单因为我还没有建造它,但它已经足够接近了。您可以忽略我已经知道以后如何保存或使用它们的其他字段。
我确实需要一些帮助是复选框组。我需要存储选定的值,稍后我将需要使用它们。我需要能够搜索它们,我需要能够显示该数据。我还需要能够创建一些评论系统(我之前已经这样做了,所以基本上我只需要能够通过其数据库 ID 引用此表单中的数据。可能是一些更新或其他基本内容。
主要是保存这些选择并搜索/显示其数据。如果我可以从 1 个数组/obect 中的数据库中获取数据,并使用一些嵌套数组来进行多种选择,那将是非常棒的。就像我在更新之前在这篇文章的末尾画的那样。
【问题讨论】:
-
在遇到这种情况时,我通常会使用
varchar,即1或0的字符串,我可以随意使用implode和explode。 -
如果您的选择将被修复,为什么不能将每个复选框存储在同一个表的不同列中?
-
我认为这不是一个好主意,因为它会使搜索这些记录变得困难,而且表格看起来很乱。
标签: php mysql database arrays checkbox