Why would you need to run it multiple times? Just do a query minus the product_id filter, turn that into a struct or just return the whole query. Also, just an FYI, shouldn't an index page be more of a summary than detail?
On Sun, Mar 30, 2008 at 7:01 PM, Mike Little <[EMAIL PROTECTED]> wrote: > managing product stock levels cont... > > hi guys, > > i have created the following function which creates a product structure > including information about any options loaded and inventory levels. > > this seems to work fine when just needing to display one product. however, > when i need to display more than one eg. index page (and i need to know info > about the stock levels) it becomes VERY inefficient to call this function > multiple times. > > can anyone let me know if there is a better path i should be following for > this? > > <cffunction name="get_product_struct" output="false" access="public" > returntype="struct"> > <cfargument name="product_id" type="numeric" required="true"> > > <cfset var qGetProduct = ""> > <cfset var product = structNew()> > > <cfquery name="qGetProduct" datasource="#variables.dsn#" > password="#variables.DBpassword#" username="#variables.DBusername#"> > SELECT product.*, product_description.* > FROM product > INNER JOIN product_description ON product.product_id > = product_description.product_id > WHERE 1=1 > AND product.product_id = <cfqueryparam > cfsqltype="cf_sql_integer" value="#arguments.product_id#"> > </cfquery> > > <cfset product = variables.utils.queryToStruct(qGetProduct)> > > <cfset getOptions = > get_options_loaded(product_id=arguments.product_id)> > > <cfif getOptions.recordcount GT 0> > <cfset arrOptions = arrayNew(2)> > <cfloop query="getOptions"> > <cfset arrOptions[getOptions.currentRow][1] = > getOptions.product_options_id> > <cfset arrOptions[getOptions.currentRow][2] = > getOptions.product_options_title> > <cfset arrOptions[getOptions.currentRow][3] = > getOptions.stock_level> > <cfset arrOptions[getOptions.currentRow][4] = > getOptions.reorder_level> > <cfset arrOptions[getOptions.currentRow][5] = > getOptions.order_key> > <cfset arrOptions[getOptions.currentRow][6] = > getOptions.isActive> > > <!--- define whether action is required on > inventory ---> > <cfif qGetProduct.track_stock AND > (getOptions.stock_level EQ 0)> > <cfset product.inventory_action_req = > true> > </cfif> > </cfloop> > <cfset product.options = arrOptions> > > <cfelse> > > <!--- define whether action is required on inventory > ---> > <cfif qGetProduct.track_stock AND > (qGetProduct.stock_level EQ 0)> > <cfset product.inventory_action_req = true> > </cfif> > </cfif> > > <cfreturn product /> > > </cffunction> > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;192386516;25150098;k Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:302301 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4