Coldfusion结构和/或数组来组织一些数据

时间:2012-01-03 16:43:16

标签: arrays coldfusion structure

创建一个生日俱乐部。

数据库由客户及其宠物组成。有些客户可能只有1只宠物,而其他客户可能有10只。Clients存储在一个表中,Pets存储在另一个表中,client_id作为主要和外键。

该网页将显示数百个客户及其宠物,但我们将专注于一个名为John Doe的虚拟记录。现在,让我们说John Doe有一只狗,一匹马和一只猫。狗和猫一月份有生日,三月有马。当我查看网页时,我可以看到约翰的猫狗已经选中了输入框而不是马匹(因为他的生日是三月而不是一月)。我点击“继续”按钮,将生成一封电子邮件给约翰,祝他的狗和猫生日快乐,但我不想包括这匹马。他将在三月份收到另一封电子邮件给马,但不是猫。和我一起到目前为止?

现在,我的表单,我的设置如下:

<cfset ClientPet = ArrayNew(2)>  
<cfoutput>  
<cfset x = 1>  
<cfloop index="p" list="#select_pet#" delimiters=",">  
Client ID: #listfirst(p,'|')#<br />  
Pet ID: #listlast(p,'|')#  
<cfset ArrayAppend(ClientPet[x][1], '#listfirst(p,'|')#')>  
<cfset ArrayAppend(ClientPet[x][2], '#listlast(p,'|')#')>  
</cfloop>  
</cfoutput>

在操作页面上,我只想向客户发送一封电子邮件并动态列出他们的宠物,但只列出从上一页中选择的宠物,所以我这样做:

<cfset ClientPet = ArrayNew(2)>  
<cfoutput>  
<cfset x = 1>  
<cfloop index="p" list="#select_pet#" delimiters=",">  
Client ID: #listfirst(p,'|')#<br />  
Pet ID: #listlast(p,'|')#  
<cfset ArrayAppend(ClientPet[x][1], '#listfirst(p,'|')#')>  
<cfset ArrayAppend(ClientPet[x][2], '#listlast(p,'|')#')>  
</cfloop>  
</cfoutput>

我不知道我是否应该使用数组或结构,无论我采用哪种方式,我都需要能够遍历所有的client_id,然后是所有的宠物,然后是下一个client_id和他们所有的宠物, 等等。我在正确的道路上面吗?如果是这样,我应该能够遍历我的2D阵列或结构,然后相应地系统地列出宠物,对吗?

1 个答案:

答案 0 :(得分:1)

正如内森所说,这可能是计划任务的一个更好的候选人而不是手动表格

..但是要解决关于数组和结构的问题......听起来你不需要任何一个。只需将复选框值设为petid值即可。

<input name="select_pet" type="checkbox" value="#petID#">

提交表单时,该字段将包含所选宠物ID的列表。只需将该列表提供给查询即可检索客户端和宠物信息。

   SELECT  c.client_name, p.pet_id, p.pet_name
   FROM    pet p INNER JOIN clients c ON c.client_id = p.client_id
   WHERE   p.pet_id IN 
   ( 
      <cfqueryparam value="#form.select_pet#" list="true" cfsqltype="cf_sql_integer"> 
   )