【问题标题】:Coldfusion: update table based on form selectionColdfusion:根据表格选择更新表格
【发布时间】:2020-12-29 10:23:58
【问题描述】:

我有一个表格,允许用户按区域编号将多条记录分配给技术人员。它通过为未完成记录中的每个区域输出一行以及加入的技术人员的选择列表来实现这一点:

<cfoutput query="getAreaList">
    <div class="row">
        <div class="col-xs-4">
        <div class="form-group">
        <label for="hub">DWS Area:</label>
        <input type="text" name="oparea" id="oparea" value="#OpArea#" class="form-control" />
        </div>
        </div>
        <div class="col-xs-4">
        <div class="form-group">
        <label for="sub">Assign to:</label>
        <select id="series" name="sub" class="form-control">
            <cfloop query="getTechAreas">
            <cfif OpArea EQ getAreaList.OpArea>
            <option value="#username#" class="#OpArea#">#Displayname#</option>
            </cfif>
            </cfloop>
            </select>
            </div>
            </div>
        </div>  
        </cfoutput>

结果输出如下所示 - 两个数据列表:

form.opArea: 区域 4,区域 5
form.sub: PERSON1,PERSON2

我的目标是更新我的工作表,其中特定form.OpArea 的每一行都更新为技术人员的姓名form.sub

如何循环遍历每个列表并在 opArea 匹配的位置插入正确的技术名称?

我尝试循环插入,但插入的是整个列表,而不是当前评估的列表项。我目前只是试图将其插入到一个保持表中以测试我的代码:

<cfoutput>
<cfloop list="#form.oparea#" index="i">
<cfquery datasource="cfLKDM" name="insertdata">
    insert into [DWS_General_Dev].[LogSure].[Holding]
    (AreaNo)
    values
    ('#form.oparea#')
</cfquery>

谢谢

【问题讨论】:

    标签: list coldfusion insert sql-update coldfusion-10


    【解决方案1】:

    您正在获取整个列表,因为您仍在循环中引用表单字段 form.oparea。其中包含整个列表。在循环遍历列表时,正如您所做的那样,cfloop 将在每次迭代期间使用列表项的当前值填充 index 变量。

    因此,您应该在示例中使用i,而不是使用form.oparea。您应该将该索引变量的名称更改为更具描述性。

    你的例子是这样的:

    <cfloop list="#form.oparea#" index="i">
        <cfquery datasource="cfLKDM" name="insertdata">
            insert into [DWS_General_Dev].[LogSure].[Holding]
            (AreaNo)
            values
            ('#i#')
        </cfquery>
    

    最好将索引变量名称更改为更具描述性:

    <cfloop list="#form.oparea#" index="thisOPArea">
        <cfquery datasource="cfLKDM" name="insertdata">
            insert into [DWS_General_Dev].[LogSure].[Holding]
            (AreaNo)
            values
            ('#thisOPArea#')
        </cfquery>
    

    【讨论】:

    • 另一种选择是跳过循环并直接从源表中插入值,过滤&lt;cfqueryparam list=true ....&gt;。此外,如果可能,请使用数字 id 而不是字符串名称 - 以避免分隔符问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    相关资源
    最近更新 更多