You could also look at this custom tag that does a great job ..

http://www.niederhausen.net/piet/dev/customtags/traversetree.html

Pat

-----Original Message-----
From: Emmet McGovern [mailto:[EMAIL PROTECTED] 
Sent: November 17, 2004 01:17
To: CF-Talk
Subject: RE: category-unlimited subcategory formatted dropdowns

I'd call you brilliant but you made fun of my chunk of code ;)  I cant
believe I overlooked repeatstring()!  Thanks you thank you thank you.

Unfortunately I'm not the greatest when it comes to complex sql so I never
looked at nested set to start with.  Care to enlighten? 

My late night is done!  Hoorah!

-e

-----Original Message-----
From: Barney Boisvert [mailto:[EMAIL PROTECTED]
Sent: Wednesday, November 17, 2004 1:01 AM
To: CF-Talk
Subject: Re: category-unlimited subcategory formatted dropdowns

First, all those queries are going to be really slow.  The code as-is will
be making n+m+1 queries to generate the dropdown, where n is the number of
individual elements, and m is the number of elements with children.  The
"+1" is for the initial query for items with no parent.
 And yes, you can count the same element in both n and m, so worst case
scenario would be 2n queries.

However, depending on what you're doing with the result, that might not
matter.  For example, if you're caching it.  Or, if it's a low-use item,
then it might not be worth the time to optimize.  One alternate route would
be to use a nested set model.

But that's not your question.  To solve the dash insertion problem, make
another optional attribute named 'depth' (or 'level') which is omitted from
the initial call (just like parentItemID) and defaults to zero.  Then add
#repeatString("-", attributes.depth)# before the category name within the
option.  Finally, pass a 'depth' attribute on the recursive calls,
incrementing by one.  So the call with look like
this:

<cf_makedump
    parentItemId="#getCurrentCat.catID#"
    dsn="#attributes.dsn#"
    depth="#attributes.depth + 1#">

cheers,
barneyb

On Tue, 16 Nov 2004 23:31:31 -0500, Emmet McGovern
<[EMAIL PROTECTED]> wrote:
> I have a table that contains categories and unlimited subcategories 
> referencing and I need to create a formatted drop down list.  I've 
> been messin around with it for a while and now with no luck.  I need 
> the list
to
> go like so...
> 
> Category Name
> --Child of category
> --Child of category
> ----Child of sub category
> ------Child of sub sub category
> --Child of category
> 
> I can get the data out in the proper order, I just cant seem to get 
> the -- in there.
> 
> I'm using this code as a custom tag which calls itself back again for 
> the recursion.
> 
> Thanks for the help
> -emmet
> 
> <! --- // Calling the initial tag in the dropdown <SELECT 
> name="parentID"
> <cf_makedrop dsn=#dsn#>
> </SELECT>
> 
> <! --- // now the tag makedrop.cfm
> 
> <cfsilent>
> <cfparam name="Variables.ParentItemID" default="0"> <cfif 
> IsDefined("Attributes.ParentItemID")>
>         <cfset Variables.ParentItemID = Attributes.ParentItemID > 
> </cfif>
> 
> <CFQUERY NAME="GetCurrentCat" DATASOURCE="#attributes.dsn#">
> SELECT      *
> FROM         category
> WHERE       ParentID = #Variables.ParentItemID#
> ORDER BY    name
> </CFQUERY>
> 
> </cfsilent>
> <cfloop query="GetCurrentCat">
> <cfoutput>
> <OPTION value="#catID#" <cfif getcurrentCat.parentID is
> 0>class="lightcell"</cfif>>#GetCurrentCat.name#</OPTION>
> </cfoutput>
> 
> <cfsilent>
> <CFQUERY NAME="CheckForSub" DATASOURCE="#attributes.dsn#">
> SELECT      *
> FROM         category
> WHERE       parentID = #GetCurrentCat.catID#
> </CFQUERY>
> </cfsilent>
> 
> <cfif CheckForSub.RecordCount gt 0 >
> <cf_makedrop
>                 ParentItemID="#GetCurrentCat.catID#"
>                 dsn="#attributes.dsn#"> </cfif> </cfloop>
> 

--
Barney Boisvert
[EMAIL PROTECTED]
360.319.6145
http://www.barneyb.com/blog/





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:184550
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54

Reply via email to