J'essaye de créer une fonction récursive dans coldfusion et rencontre quelques problèmes.Fonction récursive dans Coldfusion
Voici la logique que j'ai:
<cffunction name="getEvents" access="private">
<cfargument name="strtdate">
<cfargument name="parentID" default=0>
<cfqeury name="qry" datasource="db">
select *
from table
where parentid = #parentid# and
starttime between #strtdate# and #DateAdd('d', 1, strtdate)#
</cfquery>
<cfset events = arraynew(1)>
<cfloop query="qry">
<cfset events[qry.currentrow] = structnew()>
<cfset events[qry.currentrow].id = qry.id>
<cfset subevents = getEvents(strtdate, qry.id)>
<cfif arraylen(subevents)>
<cfset events[qry.currentrow].subevents = subevents>
</cfif>
</cfloop>
<cfreturn events>
</cffunction>
Le problème est qu'une fois que la fonction elle-même appelle une fois qu'il desserre la requête initiale dans la boucle. Maintenant, les événements sont profonds à trois niveaux, mais je ne veux pas avoir le même code à plusieurs reprises pour gérer tous les événements.
Je voudrais finir avec un tableau de structs qui contient tous les événements et sous-événements pour un jour donné.
Et expliquer pourquoi c'est important aiderait les gens dans le futur. Pourquoi ce problème est-il dû au fait que les variables ne sont pas var-scoping? –
Merci. Cela a fait l'affaire. J'ai CFQueryParam dans mon code mais je ne voulais pas écrire plus que ce dont j'avais besoin ici. –
Edward, je viens de trouver ça http://www.garyrgilbert.com/tutorials/coldfusion/beginner/scope.cfm –