创建一个生日俱乐部。
数据库由客户及其宠物组成。有些客户可能只有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阵列或结构,然后相应地系统地列出宠物,对吗?
答案 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">
)