选择选项后删除ColdFusion选项
问题描述:
我遇到了我的ColdFusion代码问题。我正在尝试使用cfloop创建一个简单的HTML选择表单来填充选项。它可以工作,当你选择一个选项时,它会从数据库中获取该选项。但一旦你这样做了,唯一可用的选项就是之前选择的选项。我究竟做错了什么?选择选项后删除ColdFusion选项
<!--- Query the DataBase --->
<cfparam name="url.colors" default="">
<cfif structKeyExists(form, "colordb")>
<cfset url.colordb = form.colordb>
</cfif>
<cfquery datasource="bentest" name="colors">
SELECT *
FROM color_codes
<cfif structKeyExists(url,"colordb") and isNumeric(url.colordb)>
WHERE id=#url.colordb#
</cfif>
</cfquery>
<!--- Add Selector for user to select a color --->
<div class="selector">
<cfoutput>
<form action="?contentId=colorPickdb" name="clr" method="post" class="clr">
<select class="clr" name="colordb" onChange="submit();">
<option selected>Select A Color!</option>
<cfloop query="colors">
<option value="#colors.id#">#colors.color#</option>
</cfloop>
</select>
</form>
</cfoutput>
</div>
<div class="dump">
<!--- Output results of Query --->
<p><cfif structKeyExists(form, "colordb")>
<cfoutput query="colors">
#colors.color# <br>
#colors.hexvalue# <br><br>
</cfoutput>
</cfif>
<br>
</p>
</div>
答
您可以在此处使用查询查询。
<!--- Query the DataBase --->
<cfparam name="url.colors" default="">
<cfquery datasource="bentest" name="colors">
SELECT *
FROM color_codes
</cfquery>
<!--- Add Selector for user to select a color --->
<div class="selector">
<cfoutput>
<form action="?contentId=colorPickdb" name="clr" method="post" class="clr">
<select class="clr" name="colordb" onChange="submit();">
<option selected>Select A Color!</option>
<cfloop query="colors">
<option value="#colors.id#">#colors.color#</option>
</cfloop>
</select>
</form>
</cfoutput>
</div>
<div class="dump">
<!--- Output results of Query --->
<p>
<cfif structKeyExists(form, "colordb")>
<cfquery dbtype="query" name="colorSelected">
SELECT *
FROM colors
WHERE id=#form.colordb#
</cfquery>
<cfoutput query="colorSelected">
#colorSelected.color# <br>
#colorSelected.hexvalue# <br><br>
</cfoutput>
</cfif>
<br>
</p>
</div>
+0
这工作完美!非常感谢! – Benjadock
+1
当然,生产代码不应该使用'SELECT *',而应该使用'
当您选择一个选项并提交页面时,where子句'WHERE id =#url.colordb#'是活动的,因此只从DB中选择该颜色。 – RRK
与原始问题无关,但是......从不使用原始客户端提供的sql值,如'WHERE id =#url.colordb#'。始终使用cfqueryparam来帮助防止sql注入并提高性能。 – Leigh
与您的问题无关,但使用下拉列表的onChange方法提交表单通常会导致无意和烦人的表单提交。 –