这看起来应该很容易,但是男人,我对这些东西都是这样的新手。我觉得我已经看过它了,所以如果这是一个愚蠢的问题,请耐心等待。
我在页面上设置了多个cfif,以在提交表单时过滤掉特定的用户组。我想在多个地方使用相同的cfquery。查询将使用相同的表单数据更新相同的表,不同之处在于创建新数据或更新数据。
编辑:在表单提交的基础上包含更详细的常见查询代码,以及我希望它们在代码注释中呈现
<cfquery name="setnewuserinfo" datasource="db">
INSERT INTO users (name,email)
VALUES ("#form.name#","#form.email#","#form.password#")
</cfquery>
<cfquery name="setnewcustomerinfo" datasource="db">
INSERT INTO customers (name,phone,address,city,state,zip)
VALUES ("#form.customer_name#","#form.phone#","#form.address#","#form.city#","#form.state#",#form.zip#)
</cfquery>
<cfquery name="updateuserinfo" datasource="db">
UPDATE users
SET
name = "#form.name#",
email = "#form.email#"
WHERE email = "#session.userinfo.email#"
</cfquery>
<cfquery name="updatecustomerinfo" datasource="db">
UPDATE customers
SET
name = "#form.customer_name#",
phone = "#form.phone#",
address = "#form.address#",
city = "#form.city#",
state = "#form.state#",
zip = #form.zip#
WHERE id = "#session.customerinfo.id#"
</cfquery>
<cfif IsDefined('form.submit')>
<!--check signin-->
<cfif IsDefined('session.userinfo'>
<cfquery name="checkowner" datasource="db">
SELECT role
FROM users
WHERE id = #session.userinfo.id#
</cfquery>
<cfif checkowner.role EQ "1"><!--is the owner-->
<!--UPDATECUSTOMERINFO-->
<!--UPDATEUSERINFO-->
<cfelse><!--not owner-->
<!--SETNEWCUSTOMERINFO-->
<!--UPDATEUSERINFO-->
</cfif><!--/check owner-->
<cfelse><!--not signed in-->
<!--CHECK DUPLICATE-->
<cfquery name="checkdup" datasource="db" maxrows="1">
SELECT id,email
FROM users
WHERE email = #form.email#
</cfquery>
<cfif checkdup.recordcount GT 0><!--there is a duplicate-->
<cfquery name="checkowner" datasource="db">
SELECT role
FROM users
WHERE id = #session.userinfo.id#
</cfquery>
<cfif checkowner.role EQ "1"><!--is the owner-->
<!--UPDATECUSTOMERINFO-->
<!--UPDATEUSERINFO-->
<cfelse><!--not owner-->
<!--SETNEWCUSTOMERINFO-->
<!--UPDATEUSERINFO-->
</cfif><!--/checkowner-->
<cfelse><!--not a duplicate-->
<!--SETNEWCUSTOMERINFO-->
<!--SETNEWUSERINFO-->
</cfif><!--/checkdup-->
</cfif><!--/check signin-->
</cfif><!--/form submit-->
我喜欢把问题放在某个地方<cfif>
说出来#嘿!称这个特定的查询!&#34;,但我不知道如何。
提前感谢帮助。
答案 0 :(得分:1)
Big Mike,
您最适合使用FW / 1或Coldbox等MVC框架来帮助您解决此问题。我建议调查一下。
如果您不使用框架,我至少会使用包含您的查询代码的CFC。
以最简单的方式处理您的问题,您将使用UDF。
<cfif stuctKeyExists(form, "submit")>
<cfif structKeyExists(form, "user1")>
<cfif form.user1 IS A>
<cfset setDatabase( value1 = form.value1 )>
</cfif>
</cfif>
<!--- more if/else statements below --->
</cfif>
<cffunction name="setDatabase" output="false" returnType="void">
<cfargument name="value1">
<cfquery name="qSetInfo">
UPDATE table1
SET value1 = arguments.value1
</cfquery>
<cfquery name"qUpdateInfo">
UPDATE table2
SET value1 = arguments.value1
</cfquery>
</cffunction>