1

我正在尝试在 ColdFusion 中创建一个值列表。基本上,我希望用户能够将他们的乐队成员输入到各个字段中。然后在提交时,任何存在的值都作为字符串而不是单个文本值存储到我的数据库中。从数据库中检索它时,运行它并使用逗号作为分隔符并再次单独拆分值。在纸上和我的脑海中,这听起来很简单,但我无法理解它。任何帮助,将不胜感激 :)

4

2 回答 2

5

如果您真的想使用该解决方案,您可以简单地使用listToArray+cfloop或只是cfloop获取个人名称:

<CFSET list_names = "John ,Luke, Bob" /> <!--- this should be the value from your db field --->
<CFSET array_names = listtoarray(list_names) />

<CFLOOP array="#array_names#" index="name">
    #name# is in the band<br />
</CFLOOP>

或者直接使用列表并循环它:

<CFSET list_names = "John ,Luke, Bob" /> <!--- this should be the value from your db field --->

<CFLOOP list="#list_names#" index="name">
    #name# is in the band<br />
</CFLOOP>

但是......我会将乐队成员的姓名保存在单独的表格中 - 例如:

bands

| id | bandname  |
+----+-----------+
| 1  | The Hives |

bands_members

| band_id | name                   |
+---------+------------------------+
|   1     | Howlin’ Pelle Almqvist |
|   1     | Nicholaus Arson        |
|   1     | Vigilante Carlstroem   |
于 2013-01-29T11:10:57.180 回答
0

为兜售我自己的(免费和开源)产品而道歉,DataMgr 有一些东西可能对这种情况特别有吸引力。

您可以传入一个逗号分隔的列表,它会将列表适当地保存为相关表中的行。

所以,你可以有一个“bands”表,一个“players”表,一个连接它们的“band2players”表。如果是这样,您可以有一个可用玩家复选框(称为“玩家”)。

然后,当您提交乐队时,您可以在 Form.id 中启动一个 band_id(例如)并执行以下操作:

 <cfset Application.DataMgr.SaveRelationList("band2players","band_id",Form.id,"player_id",Form.players)>

http://www.bryantwebconsulting.com/docs/datamgr/save-many-to-many-relationships.cfm

通过一些额外的工作,您甚至可以在 DataMgr 中设置一个“关系字段”,以使 DataMgr 的行为就像“bands”表有一个“players”字段一样,即使它实际上只是在后台访问“bands2players”数据. 这将允许您使用逗号分隔的列表进行保存和检索。如果您想要一个文本区域而不是复选框列表,您甚至可以使用名称而不是 id。

http://www.bryantwebconsulting.com/docs/datamgr/lists.cfm

于 2013-01-29T15:55:09.480 回答