Html 如何通过不指定任何查询的列名为其动态创建下拉菜单
我正在创建一个HTML表单,它需要SQL数据库中查询值的下拉菜单。我不想硬编码表单输入,而是尽可能动态地创建它们,但我注意到,当查询使用下拉菜单时,选项需要指定的列名。这迫使我对每个下拉菜单进行硬编码,因为我需要为每个下拉菜单指定列名。指定列名是有意义的,因为一个查询可以有多个选定的列名,但我用于下拉菜单的每个查询只选择了一个列名 我试图用Coldfusion和HTML来解决这个问题 下面是硬编码下拉菜单Html 如何通过不指定任何查询的列名为其动态创建下拉菜单,html,sql,drop-down-menu,coldfusion,coldfusion-9,Html,Sql,Drop Down Menu,Coldfusion,Coldfusion 9,我正在创建一个HTML表单,它需要SQL数据库中查询值的下拉菜单。我不想硬编码表单输入,而是尽可能动态地创建它们,但我注意到,当查询使用下拉菜单时,选项需要指定的列名。这迫使我对每个下拉菜单进行硬编码,因为我需要为每个下拉菜单指定列名。指定列名是有意义的,因为一个查询可以有多个选定的列名,但我用于下拉菜单的每个查询只选择了一个列名 我试图用Coldfusion和HTML来解决这个问题 下面是硬编码下拉菜单 <select name = "REV_WC"> <optio
<select name = "REV_WC">
<option hidden disabled selected value> </option>
<cfoutput query = "#application.REV_WC#">
<option value = "#REV_WC#"> #REV_WC# </option>
</cfoutput>
</select>
我想尝试这样做,但不确定正确的语法是什么:
<select name = "Dd_NAME">
<option hidden disabled selected value> </option>
<cfoutput query = "#db_query#">
<option value = "#db_query.value#"> #db_query.value# </option>
</cfoutput>
</select>
查询如下所示:
<cfscript>
application.REV_WC = application.myDB.execute(sql = "SELECT DISTINCT REV_WC FROM MY_TABLE").getResult();
</cfscript>
像这样的事情可能会达到你的目的。从3个列表开始
<cfscript>
tableNames = "t1,t2,t3,etc";
fieldNames = "f1,f2,f3,etc";
queryNames = "q1,q2,q3,etc";
</cfscript>
然后,在列表中循环运行查询并创建选择
<cfloop from = "1" to = "#listlen(tableNames)#" index = "i">
<cfset thisTable = listGetAt(tableNames, i)>
<!--- same for fieldNames and queryNames --->
<cfquery name = "#thisQuery#">
select distinct #thisField# from #thisTable#
</cfquery>
<select name = "#thisTable#_#thisField#">
<cfoutput query = "#thisQuery#">
<option value = "#thisQuery.thisField#">"#thisQuery.thisField#"</option>
</cfselect>
</cfloop>
代码示例尚未经过测试,可能有错误,但它应该显示出总体思路。类似的内容可能会满足您的需要。从3个列表开始
<cfscript>
tableNames = "t1,t2,t3,etc";
fieldNames = "f1,f2,f3,etc";
queryNames = "q1,q2,q3,etc";
</cfscript>
然后,在列表中循环运行查询并创建选择
<cfloop from = "1" to = "#listlen(tableNames)#" index = "i">
<cfset thisTable = listGetAt(tableNames, i)>
<!--- same for fieldNames and queryNames --->
<cfquery name = "#thisQuery#">
select distinct #thisField# from #thisTable#
</cfquery>
<select name = "#thisTable#_#thisField#">
<cfoutput query = "#thisQuery#">
<option value = "#thisQuery.thisField#">"#thisQuery.thisField#"</option>
</cfselect>
</cfloop>
代码示例未经测试,可能有错误,但它应该显示出总体思路。在大多数情况下,最好是显式的,但实现所需的方法是使用查询结果中的ColumnList作为数组表示法中的列名
<option value = "#db_query[columnList][currentRow]#"> #db_query[columnList][currentRow]# </option>
在大多数情况下,最好是显式的,但实现所需的方法是使用查询结果中的ColumnList作为数组表示法中的列名
<option value = "#db_query[columnList][currentRow]#"> #db_query[columnList][currentRow]# </option>