I'm not sure how many levels of recursion your trying to do, but with CF there is a limit to recursion. This little factorial function will show you that limit in a hurry if you put in a large enough value.
<cffunction name="factorial" access="public" returntype="numeric" output="yes"> <cfargument name="end_value" required="Yes" type="numeric"> <cfif end_value lte 1> <cfreturn 1> <cfelse> Calling myself with #arguments.end_value-1#<br> <cfreturn end_value * Factorial(arguments.end_value-1)> </cfif> </cffunction> <cfoutput>#factorial(1000)#</cfoutput> Wil Genovese One man with courage makes a majority. -Andrew Jackson A fine is a tax for doing wrong. A tax is a fine for doing well. Mike | NZSolutions Ltd wrote: > Hi guys, > > I am attempting to create a limitless level category system. > > This is what I have so far... > > Calling page... > > <cfoutput> > #application.category.display_categories(0)# > </cfoutput> > > Cfc... > > <cffunction name="get_categories" output="false" access="public" > returntype="query"> > <cfargument name="parent_id" type="numeric" required="no"> > <cfargument name="cat_id" type="numeric" required="no"> > > <cfquery name="getCats" datasource="#variables.dsn#" > username="#variables.dbusername#" password="#variables.dbpassword#"> > SELECT * > FROM categories > WHERE 1=1 > <cfif isDefined("arguments.cat_id")> > AND cat_id = <cfqueryparam > cfsqltype="cf_sql_integer" value="#arguments.cat_id#"> > </cfif> > <cfif isDefined("arguments.parent_id")> > AND parent_id = <cfqueryparam > cfsqltype="cf_sql_integer" value="#arguments.parent_id#"> > </cfif> > </cfquery> > > <cfreturn getCats /> > </cffunction> > > <cffunction name="display_categories" output="true" access="public"> > <cfargument name="parent_id" type="numeric" required="yes"> > <cfargument name="level" type="numeric" default="0"> > > <cfif arguments.level EQ 0> > <cfset variables.output = ""> > </cfif> > > <cfset getCategories = > get_categories(parent_id=arguments.parent_id)> > > <cfloop query="getCategories"> > <cfset variables.output = variables.output & > " > <table width='640' border='0' > cellspacing='0' cellpadding='5'> > <tr> > <td>#getCategories.cat_title#</td> > <td width='50'><div align='center'><a > href='index.cfm?action=product_manager&page=editCat&cat_id=#getCategories.ca > t_id#'>Edit</a></div> > </td> > <td width='50'><div align='center'><a > href='index.cfm?action=product_manager&page=categories&step=delete&cat_id=#g > etCategories.cat_id#' onClick='GP_popupConfirmMsg('Are you sure you wish to > delete the category #getCategories.cat_title#? This action cannot be > undone.');return document.MM_returnValue'>Delete</a></div> > </td> > </tr> > </table> > #arguments.level# ID:#getCategories.cat_id# > "> > <cfif isNumeric(getCategories.cat_id)> > <cfset variables.output = > variables.output & > display_categories(parent_id=getCategories.cat_id,level=arguments.level + > 1)> > </cfif> > </cfloop> > > <cfreturn variables.output /> > </cffunction> > > The recordset is not returning the heirarchy correctly however. Can anyone > see what (big) mistakes I am making?? > > Thanks heaps. > mike > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Get the answers you are looking for on the ColdFusion Labs Forum direct from active programmers and developers. http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid-72&catid=648 Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:289063 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4