Lire des répertoires et leur fichier

Signaler
Messages postés
7
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 avril 2007
-
Messages postés
7
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 avril 2007
-
Salut,

Je tente désespérément de lister dans une page html des répertoires et les fichiers qu'ils contiennent.
Comme ceci :

Dossier 1
Fichier1
Fichier2

Dossier 2

Fichier1

Fichier2

Dossier 3

Fichier1

Fichier2

Le meilleur résultat que j'ai obtenu est d'afficher tous les dossiers et le premier fichier comme ceci :

<cfparam default="#GetDirectoryFromPath(GetTemplatePath())#../showcase" name="repertoire"/> <cfdirectory action="list" directory="#repertoire#" name="allRepertory" sort="name ASC, size DESC"/> <cfoutput query="allRepertory"> #allRepertory.name#
<cfdirectory action="list" directory="#repertoire#/#allRepertory.name#" name="eachRepertory"> #eachRepertory.name# </cfoutput>
Etant donné qu'on ne peut nester des balises output et que cfloop ne comprends pas les objets complexes, comment faire pour boucler à l'intérieur des dossiers ?

arrrgggggg.....

3 réponses

Messages postés
203
Date d'inscription
lundi 23 décembre 2002
Statut
Membre
Dernière intervention
11 mai 2006

Salut,

Tu peux nester des cfoutput dans la mesure ou le premier comporte l'attribut group="#alldirectory.name#"
ce qui ne devrait pas poser de probleme puisque tu ne peux pas avoir deux repertoires avec le meme nom.

Laurent
Messages postés
7
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 avril 2007

Merci pour ta réponse Laurent.... le problème est que j'ai une nouvelle erreur indiquant <TR><TD id=tableProps2 valign="middle" align="left" width="500">
Invalid column name for Group attribute.

</TD></TR><TR><TD id=tablePropsWidth width="400" colspan="2">The value specified for the group attribute "banners468x60" does not specify a column name of the query

Je n'arrive pas plus à trouve de l'info sur le sujet... mon code est le suivant :

<cfparam default="#GetDirectoryFromPath(GetTemplatePath())#/showcase" name="showcaseRepertory"/>
<cfdirectory action="list" directory="#showcaseRepertory#" name="allRepertory" sort="name ASC, size DESC"/>

<cfoutput query="allRepertory" group="#allRepertory.name#">
#allRepertory.name#

<cfdirectory action="list" directory="#allRepertory.name#" name="eachRepertory" sort="name ASC, size DESC"/>
<cfoutput>
#eachRepertory.name#
</cfoutput>
</cfoutput>

Tu as une idée du problème ? moi je vois pas </TD></TR>
Messages postés
7
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 avril 2007

Après trois jours d'angoisse, voici la solution :

Je fais une action "list" sur le répertoire principale, avec l'attribut "recurse" (que j'ai appris aujourd'hui). Après, je teste s'il s'agit d'un dossier ou d'un fichier, puis simplement le mettre en forme suivant la situation.

<cfparam default="#GetDirectoryFromPath(GetTemplatePath())#/showcase" name="repertoire"/>
<cfdirectory action="list" directory="#repertoire#" name="allDirectories" recurse="true"/>
<cfinclude template="includes/declaration.cfm"/>


<cfoutput query="allDirectories" group="name">
<cfif #allDirectories.type# IS "DIR">
#allDirectories.name#

<cfelse>
#allDirectories.name#

</cfif>
</cfoutput>

Ca fait du bien !!!