ColdFusionで値リストを作成しようとしています。基本的には、ユーザーが仲間のバンドメンバーを個々のフィールドに入力できるようにしたいと思います。次に、送信されると、存在するすべての値が、個々のテキスト値ではなく文字列としてデータベースに保存されます。データベースから取得するときは、それを実行し、コンマを区切り文字として使用して、値を再度個別に分割します。紙の上でも頭の中でも簡単に聞こえますが、頭を丸めることができません。どんな助けもいただければ幸いです:)
2 に答える
そのソリューションを本当に使いたい場合は、単に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 |
私自身の(フリーでオープンソースの)ウェアを宣伝してしまったことをお詫びしますが、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に「関係フィールド」を設定して、バックグラウンドで「bands2players」データにアクセスするだけの場合でも、DataMgrを「bands」テーブルに「players」フィールドがあるように動作させることもできます。 。これにより、コンマ区切りのリストを使用して保存および取得できます。チェックボックスリストの代わりにテキストエリアが必要な場合は、IDの代わりに名前を使用することもできます。