2010-08-16 85 views
3

与变量定义我这里有一个有趣的问题......检查表单字段的名称

<cfloop from="1" to="#form.countField#" index="i"> 
<cfif isdefined('form["semester#i#"]')> 
    <cfquery name = "insertCourses" datasource="cas_evaluation"> 
    INSERT INTO courses (faculty, semester, course, students, hours, team_taught, first_time, ec_dl, online, course_revision) 
    VALUES ('#form.name#', '#form['semester#i#']#', '#form['course#i#']#', '#form['numstudents#i#']#', '#form['hours#i#']#', '#form['team#i#']#', '#form['firsttime#i#']#', '#form['ec_dl#i#']#', '#form['online#i#']#', '#form['revision#i#']#') 
    </cfquery> 
</cfif> 
</cfloop> 

基本上,我有一个可以在添加或删除一些动态领域。 (这些都是btw字段的行......)我把它编码的方式......如果用户在中间删除一行...(他们删除第2行,第1行和第3行留下......)问题,因为循环正在寻找它,但它不是很明显。所以,我想检查,看看其中的一个字段被定义......但它不喜欢的isdefined变量的语法.. :(

什么建议?

+1

btw,使用 !!! – Henry 2010-08-16 18:53:44

回答

9

我不太明白的问题,所以这是不工作?

<cfif isdefined('form["semester#i#"]')> 

使用

<cfif structKeyExists(form, "semester#i#")> 

cfparam和isDefined不喜欢数组样式的语法。在你的情况下,你也可以使用:

<cfif isdefined('form.semester#i#')> 

个人而言,它不是我喜欢我自己的风格,但它应该工作正常。

+0

非常感谢你:) – Bri 2010-08-16 19:03:14

2

使用表单范围如下的结构如果你使用structKeyList(形式),你会得到定义的每个表单字段列表。

+0

你能举个例子吗? :) – Bri 2010-08-16 18:55:24

+0

这将循环遍历一个形式的结构: 形式的值#密钥#是#form [关键]#
。 – 2010-08-23 15:40:18

0

另外,请确保您使用cfqueryparam来转义您的sql变量。你现在的代码充满了sql注入漏洞。此代码应该可以工作,并应该是安全的。

<cfloop from="1" to="#form.countField#" index="i"> 
    <cfif structKeyExists(form, 'semester#i#')> 
    <cfquery name = "insertCourses" datasource="cas_evaluation"> 
     INSERT INTO courses 
     (faculty, semester, course, students, hours, team_taught, first_time, ec_dl, online, course_revision) 
     VALUES 
     (<cfqueryparam cfsqltype='cf_sql_varchar' value='#form.name#' /> 
     , <cfqueryparam cfsqltype='cf_sql_varchar' value='#form['semester#i#']#' /> 
     , <cfqueryparam cfsqltype='cf_sql_varchar' value='#form['course#i#']#' /> 
     , <cfqueryparam cfsqltype='cf_sql_varchar' value='#form['numstudents#i#']#' /> 
     , <cfqueryparam cfsqltype='cf_sql_varchar' value='#form['hours#i#']#' /> 
     , <cfqueryparam cfsqltype='cf_sql_varchar' value='#form['team#i#']#' /> 
     , <cfqueryparam cfsqltype='cf_sql_varchar' value='#form['firsttime#i#']#' /> 
     , <cfqueryparam cfsqltype='cf_sql_varchar' value='#form['ec_dl#i#']#' /> 
     , <cfqueryparam cfsqltype='cf_sql_varchar' value='#form['online#i#']#' /> 
     , <cfqueryparam cfsqltype='cf_sql_varchar' value='#form['revision#i#']#' /> 
     ); 
    </cfquery> 
    </cfif> 
</cfloop>