【发布时间】:2013-03-22 18:50:15
【问题描述】:
我有一个cfquery,它在WHERE 子句中使用了一些FORM 字段。我的第一个问题是每次访问我的网页时,cfquery 代码都会出现在页面顶部。我应该将查询放在 .cfm 表单中的什么位置并访问表单中的某些字段?我的第二个问题是我不确定WHERE 子句是否识别字段的值。你能帮帮我吗?
这是我的代码设置方式:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script language="javascript" type="text/javascript">
function addRow() {
var tbl = document.getElementById('tblSample');
var lastRow = tbl.rows.length;
var iteration = lastRow - 3;
var row = tbl.insertRow(lastRow);
........... etcetra.......
}
</script>
</head>
<body lang=EN-US style='tab-interval:.5in'>
<div class=Section1>
<cfparam name="awardTotals" default="0" />
<cfparam name="search_award.GrandTotal" default="0" />
<cfif isDefined("form.Finalize")>
<cfquery name="search_award" datasource="Test">
SELECT g.Code1 + g.Code2 + g.Code3 + g.Code4 AS GrandTotal
FROM Codes g
WHERE g.CodeNumber = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.CodeNum#">
AND g.TestYear = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.TestYear#">
AND g.SelType = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.SelType#">
AND g.Jurisdiction = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.SelJuris#">
</cfquery>
<cfif not search_award.GrandTotal is FundingTotals>
<script type="text/javascript">
alert('The totals do not match.');
return false;
</script>
<cfelse>
<script type="text/javascript">
alert('The totals match.');
return true;
</script>
</cfif>
</cfif>
<p class=MsoNormal align=center style='text-align:center'><
<cfoutput>
<form name="thisform" action="FormData.cfm" method="post">
<p class=MsoNormal align=left style='text-align:left'>
<input type="hidden" id="totalFields" name="totalFields" value="0">
<input type="text" id="awardTotals" name="#search_award.GrantTotal#" value="0">
<table width="1177" border="1" id="tblSample">
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<th height="10"bgcolor="##cccccc" colspan="10"><h3>Jurisdiction:
<select name="SelJuris" id="SelJuris">
<option value = "0">---Jurisdictions---</option>
<option value = "1">Allegany County</option>
<option value = "2">Anne Arundel County</option>
<option value = "3">Baltimore County</option>
<option value = "4">Calvert County</option>
<option value = "5">Caroline County</option>
</select>
<input name="CodeNum" id="CodeNum" type="text" size="20">
<input name="TestYear" id="TestYear" type="text" size="20">
<input name="SelType" id="SelType" type="text" size="20">
</th>
</tr>
</table>
<input type="Submit" name="Submit Form" value="Submit Form" onClick="">
<input type="Button" name="Finalize" value="Finalize" onClick="">
</form>
</body>
</cfoutput>
</html>
(来自 cmets 的更新)
现在我收到一条消息,Element CODENUM is undefined in FORM
【问题讨论】:
-
您的coldfusion代码是在显示还是因为它正在尝试执行而出现错误?
-
现在我收到一条消息,说我的元素代码在 FORM 中未定义。
-
与您的直接问题无关,但总的来说,我可以进行以下观察吗:1)将数据库/业务逻辑与显示逻辑混为一谈并不是编写代码的好方法。我可以推荐你阅读 MVC 吗? 2) 永远不要将用户的值硬编码到您的 SQL 字符串中。绝不。使用 CFQUERYPARAM 标记。
-
@AdamCameron 我刚开始使用 CF,在使用它时我还没有意识到 MVC 分离规则。 CF 在与 DB 的交互方式上非常精简,因此很容易违反它们。我想可以实现控制器的一种方法是通过命令文件(cfc)中定义的函数。确实很好!
-
@SamusArin CFML 的易用性以及它的记录方式有点鼓励不合标准的做法,不幸的是。如果您需要反馈其他 CFMLers 的想法,请务必加入 CFML Slack 频道:cfml-slack.herokuapp.com
标签: coldfusion cfquery