2011-11-16 4 views
2

Je suis novice en coldfusion et je suis bloqué avec une requête en boucle dans une fonction. Par exemple, j'ai une fonction dans laquelle se trouve une requête qui renvoie les noms commençant par 'a'. mais je suis capable d'obtenir seulement une valeur (première valeur) de la base de données. En fait dans la DB nous avons plus de 1 valeurs pour cette question. Comment devrais-je boucler la question dans la fonction? Toute aide est appréciée ...afficher le résultat de la requête

<cffunction name="getNames" returntype="any"> 
<cfargument name="letter" required="true"> 
<cfquery name="getNamesfrmDB" datasource="test"> 
select * from employee where firstname like '#arguments.letter#%' 
</cfquery> 

<cfreturn getNamesfrmDB/> 
</cffunction> 
<cfoutput>#getNames('a').firstname#</cfoutput> 

Merci à l'avance ...

+0

'' ne retournera jamais la première ligne. Comme l'a déclaré Jason, ajoutez l'attribut de la requête à la balise pour faire une boucle sur votre jeu d'enregistrements. –

Répondre

2

ahh. Je n'ai pas répondu à la question précédente ... ne tenez pas compte de la réponse précédente ..

Vous passez la requête tout droit hors de la fonction, elle sortira donc comme une requête et vous pouvez la traiter comme telle.

Utilisez query = "qname" dans votre cfouptut

<cffunction name="getNames" returntype="any"> 
     <cfargument name="letter" required="true"> 
     ... your query .. 
     <cfreturn getNamesfrmDB/> 
    </cffunction> 

    <!---call the function---> 
    <cfset names = getNames('a')> 

    <!---now loop over the results using cfoutput---> 
    <cfoutput query="names"> 
     <p>#firstname#</p> 
    </cfoutput> 

    <!---OR ALTERNATIVELY, as you can't use cfoutput inside cfoutput.. so if you are already inside a cfouput, you can also output query results using cfloop---> 
    <cfoutput> 
     ..some other stuff... 
     <cfloop query="names"> 
      <p>#firstname#</p> 
     </cfloop> 
     ..some other stuff.. 
    </cfoutput> 
Questions connexes