1

我创建了一个动态表单,允许您修改所需的输入字段数量。这是因为他们可能有 15 个乐队成员并且需要 15 个字段,或者一个乐队可能有 2 个。我唯一的问题是提交表单时,每个输入都被命名为“memberName1”、“membername2”等。完成使用 jQuery。我将如何在运行查询时/之前运行检查以查看这些字段是否已填充以及它们是否要将它们的值输入到数据库中?谢谢。

编辑1:

我在想类似下面的代码。但是我需要运行一个循环来计算名称为 的所有当前字段memberName,后跟一个数字。与其在第一个空旷的地方停下来,不如把它们都跑一遍。如果值为空白,则什么也不做。如果它有一个值,则将其插入我的表中。

<cfquery datasource="exampledatasource" name="insertbandmembers">
  Insert Into members(members_name)
  Values (memberName#i#)
</cfquery>
4

3 回答 3

1

我会做这样的事情:

<cfloop list="#form.fieldnames#" index="ThisElement">
    <cfif left(ThisElement, 10) is "memberName">
       <cfset ThisValue = form[ThisElement]>

       <cfif len(ThisValue)>
           <cfquery name="AddRecord">
              Insert Into members(members_name)
              Values 
              ( <cfqueryparam cfsqltype="cf_sql_varchar" value="#ThisValue#"> )
           </cfquery>
       </cfif>  <!--- len(thisvalue) --->

    </cfif>  <!--- left(ThisElement, 10) is "memberName" --->
</cfloop>
于 2013-02-13T17:43:46.977 回答
1

(这开始是一个评论,但它太长了..)

有不同的方法来处理它。我的偏好是评论中提到的特拉维斯。基本上让 jquery 将成员总数存储在隐藏的表单字段中。然后使用该值循环访问成员字段、验证值并根据需要插入。

您可以轻松地修改Danjamckinn的示例来执行此操作。注意到他们<cfqueryparam>用来帮助​​防范 sql 注入了吗?此外,由于这些是相关的插入,您希望将整个内容包装在一个<cftransaction>. 这确保了插入物被视为一个单元。他们要么都成功,要么都失败——一起。

    <cfparam name="form.totalFields" default="0" >

    <cfloop from="1" to="#val(form.totalFields)#" index="x">
        <!--- extract current name --->
        <cfset memberName = trim(FORM["memberName"& x])>

        <!--- insert NON-empty values --->
        <cfif len(memberName)>
            <cfquery datasource="exampledatasource" name="insertbandmembers">
                INSERT INTO members ( members_name )
                VALUES 
                ( 
                   <cfqueryparam value="#memberName#" cfsqltype="cf_sql_varchar"> 
                )
            </cfquery>
        </cfif>
   </cfloop>
于 2013-02-13T18:46:06.733 回答
1

使用静态数字循环,但一旦未传递序列中的数字就会中断。您还可以计算 jQuery 中的数字字段并将其与表单提交一起传递

<cfquery datasource="exampledatasource" name="insertbandmembers">
  INSERT Into members(members_name)
  VALUES
  <cfloop index="i" from="1" to="15">
    <cfif structKeyExists(form, 'memberName#i#') AND len(form['memberName#i#'])>
      <cfif i neq 1>, </cfif>
      ( <cfqueryparam cfsqltype="cf_sql_varchar" value="#form['memberName#i#']#"> )
    <cfelse>
      <cfbreak> 
    </cfif> 
  </cfloop>
</cfquery>
于 2013-02-13T16:39:06.800 回答