From: kenji776 on
Hey all.
I am trying to build a SQL tool that admins can use on my website. Basically I
want one cflayout tag, that has a dynamic number of cflayoutareas. The first
one will always contain the SQL entry form, and then a new cflayoutarea tab
will be created with every entered query. That way you can easily look at past
queries and such. My code works fine except for the fact that every time you
submit the form to run a query, it creates a whole new cflayout and populates
that with the results. I'll post a pic, it's really weird. Attached is the full
source code.

http://www.digitalswordsmen.com/members/Shared/OddResults.JPG

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style type="text/css" title="currentStyle" media="screen">
@import "../popup_style.css";
.style1 {font-size: 10px}
</style>
<title>SQL Tool</title>
<cfparam name="url.action" type="string" default="edit">
<cfset Session.Queryname[1]="">
<cfset Session.QueryResult[1]="">
<cfset errors = 0>
<cfparam name="url.RunNumber" default="1" type="numeric">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<cfoutput>
<cfif isdefined("form.submit") and isdefined("form.SQL")>
<cfif FindNoCase('drop', form.sql)>
Drops are not allowed<br>
<cfset errors = 1>
</cfif>

<cfif FindNoCase('truncate', form.sql)>
Truncates are not allowed<br>
<cfset errors = 1>
</cfif>

<cfif FindNoCase('delete', form.sql)>
Delete are not allowed<br>
<cfset errors = 1>
</cfif>

<cfif errors LT 1>
<cftry>
<cfquery name="RunSQL" datasource="users">
#Form.SQL#
</cfquery>

<cfset Session.Queryname[url.RunNumber] = '#form.QueryName#'>
<cfset Session.QueryResult[url.RunNumber] = '#RunSQL#'>
<cfset url.RunNumber = url.RunNumber +1>

<cfcatch type="any">
<cfset Session.Queryname[url.RunNumber] = '#form.QueryName#'>
<cfset Session.QueryResult[url.RunNumber] = '#cfcatch.message#
#cfcatch.detail# #cfcatch.SQLState#'>
<cfset url.RunNumber = url.RunNumber +1>
</cfcatch>

</cftry>
</cfif>
</cfif>

<cflayout type="tab" name="tabpreferences" tabheight="600">
<cflayoutarea title="SQL Entry" closable="false">

<cfform name="SQLForm" method="post"
action="#cgi.scriptname#?action=run&runNumber=#url.RunNumber#">
Enter your SQL Query Below<br>
Query Name: <cfinput name="QueryName" type="text" maxlength="12"
message="You must enter a name for this query" required="yes"><br>
Query<br>
<cftextarea name="SQL" message="You must enter a query of some kind"
required="yes"></cftextarea><br>
<cfinput type="submit" value="Run Query" name="submit"><br>
</cfform>
</cflayoutarea>

<cfif url.runnumber GT 1>
<cfloop from="1" to="#StructCount(Session.Queryname)#" index="i">
<cflayoutarea title="#session.Queryname[i]#" closable="true">
<cfdump var="#Session.QueryResult[i]#">
</cflayoutarea>
</cfloop>
</cfif>
</cflayout>
</cfoutput>
</body>
</html>