数据库

时间:2015-10-15 21:02:38

标签: coldfusion

我有一个从1到30循环的小表单并分配变量。在将这些变量保存到数据库之后,我在确定如何将输入值设置为数据库中的值时遇到了一些麻烦。这是我的一些代码。

<cfloop index="i" 
    from="1" 
    to="30">

    <select name="supply_#i#"
        id="supply_#i#" 
        />
            <cfloop query="GetDescriptor">
                <option value="#GetDescriptor.Code#">
                    #GetDescriptor.Descriptor#
                </option>
            </cfloop>
    </select>

    <input type="text"
        name="quant_#i#"
        id="quant_#i#"
        />

</cfloop>

完成后,用户将所有30个值保存到数据库中。当他们尝试查看或编辑表单时,我需要显示以前选择的值。我真的不知道如何将coldfusion变量“嵌套”在一起,或者如果它甚至可能,但这里是一个不起作用的VIEW / EDIT .cfm的例子,但是向你展示了我想要实现的目标。值。

<cfloop index="i" 
    from="1" 
    to="30">

    <cfset "supply_#i#" = #QUERY.supply#i##>
    <cfset "quant_#i#" = #QUERY.quant#i##>

    <select name="supply_#i#"
        id="supply_#i#" 
        />
            <cfloop query="GetDescriptor">
                <option value="#GetDescriptor.Code#" 
                        <cfif #VARIABLES.supply_#i## EQ '#GetDescriptor.Code#'>
                            SELECTED="SELECTED"
                        </cfif> >
                    #GetDescriptor.Descriptor#
                </option>
            </cfloop>
    </select>

    <input type="text"
        name="quant_#i#"
        id="quant_#i#"
        value ="#VARIABLES.quant_#i##"
        />

</cfloop>

2 个答案:

答案 0 :(得分:1)

我认为最简单的方法是使用数组表示法。也就是说,使用括号代替点。由于所有变量范围都是结构,因此可以执行此操作。

variables["foo"]

相当于

variables.foo

所以在你的情况下,你可能想引用

#VARIABLES["supply_#i#"]#

或者,或许

#VARIABLES["supply_" & i]# 

答案 1 :(得分:0)

(评论太长)

插入值的db表的实际结构是什么?变量名称建议您使用非规范化数据库设计。如果是这样,请考虑规范化结构并将数据存储在行(SupplyCode,Quantity)中,而不是列(Supply1,Qty1,Supply2,Qty2,....)。规范化结构更容易查询,并根据需要支持尽可能多的条目。

只需查询表并使用查询循环显示现有值。使用currentRow代替索引变量i

<cfquery name="existingEntries" ...>
     SELECT  SupplyCode, Quantity
     FROM    YourTable
     ORDER BY .....
</cfquery>

<cfloop query="existingEntries">
    <select name="SupplyCode_#currentRow#" id="SupplyCode_#currentRow#">
       <cfloop query="GetDescriptor">
           <option value="#GetDescriptor.Code#" 
               <cfif existingEntries.SupplyCode EQ GetDescriptor.Code>
                        SELECTED="SELECTED"
               </cfif>>
                #GetDescriptor.Descriptor#
            </option>
        </cfloop>
    </select>

  <input type="text" name="Quantity_#currentRow#" value ="#existingEntries.Quantity#" .... />
</cfloop>

NB:通常,您会存储GetDescriptor表中的FK ID,即“SupplyID”,而不是字符串代码或说明,即“SupplyCode”

相关问题