begin process at 2010 03 22 06:16:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > CRÉATION D'UNE ARBORESCENCE

CRÉATION D'UNE ARBORESCENCE


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Classé sous :arborescence, lister, fichiers, dossiers, récursivité Niveau :Débutant Date de création :07/02/2006 Date de mise à jour :14/02/2006 00:24:57 Vu :13 181

Auteur : Charles Racaud

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note


 Description

Cette fonction permet de lister les fichiers et dossiers contenu dans un dossier et même de lister les sous-dossiers.
En gros il fait toute l'arborescence à partir d'un dossier. Tout cela par récursivité.
J'ai mis un filtre pour ne pas lister certains dossier ou fichier et un autre pour ne pas lister certaines extensions

Source

  • <?php
  • function ListFolder($Folder, $SkipFileExts, $SkipObjects) // Fonction pour lister les dossier
  • {
  • $dir = opendir($Folder);
  • while (false !== ($Current = readdir($dir))) // Boucle sur tout ce qu'il y a dans le répertoire
  • {
  • if ($Current !='.' && $Current != '..' && in_array($Current, $SkipObjects)===false)
  • {
  • if(is_dir($Folder.'/'.$Current)) // Si c'est un dossier
  • {
  • echo '<strong style="color: #ff0000;">'.$Current.'</strong><br>';
  • ListFolder($Folder.'/'.$Current, $SkipFileExts, $SkipObjects); // On liste les dossiers contenue dans le dossier (récursivité)
  • }
  • else
  • {
  • $FileExt = strtolower(substr(strrchr($Current ,'.'),1));
  • if (in_array($FileExt, $SkipFileExts)===false) // On regarde si on dois afficher cette extension
  • echo $Current.'<br>';
  • }
  • }
  • }
  • closedir($dir);
  • }
  • ?>
  • <html>
  • <head>
  • <title>Test listage de fichier et dossier par récursivité</title>
  • </head>
  • <body>
  • <?php
  • $Folder = './';
  • $SkipExts = array('txt', 'php', 'db');
  • $SkipObjects = array('UnDossier', 'UnFichier');
  • ListFolder($Folder, $SkipExts, $SkipObjects);
  • ?>
  • </body>
  • </html>
<?php

function ListFolder($Folder, $SkipFileExts, $SkipObjects) // Fonction pour lister les dossier
{
 $dir = opendir($Folder);
 while (false !== ($Current = readdir($dir))) // Boucle sur tout ce qu'il y a dans le répertoire
 {
  if ($Current !='.' && $Current != '..' && in_array($Current, $SkipObjects)===false)
  {
   if(is_dir($Folder.'/'.$Current)) // Si c'est un dossier
   {
    echo '<strong style="color: #ff0000;">'.$Current.'</strong><br>'; 
    ListFolder($Folder.'/'.$Current, $SkipFileExts, $SkipObjects); // On liste les dossiers contenue dans le dossier (récursivité)
   }
   else
   {
    $FileExt = strtolower(substr(strrchr($Current ,'.'),1));
    if (in_array($FileExt, $SkipFileExts)===false) // On regarde si on dois afficher cette extension
     echo $Current.'<br>';
   }
  }
 }
 closedir($dir); 
}

?>

<html>
 <head>
  <title>Test listage de fichier et dossier par récursivité</title>
 </head>
 <body>

  <?php
   $Folder = './';
   $SkipExts = array('txt', 'php', 'db');
   $SkipObjects = array('UnDossier', 'UnFichier');
   ListFolder($Folder, $SkipExts, $SkipObjects);
  ?>	

 </body>
</html>

 Conclusion

Pour le listage, je n’ai pas fait de mise en forme. Y'a juste les dossiers en gras et en rouge, les fichiers en noir.
C'est juste pour l'example.
Ce sont mes débuts en PHP, donc n'hésiter pas à m'encourager ou à me critiquer. Le but étant de progresser.


 Historique

07 février 2006 16:19:21 :
Application de la bonne méthode pour énumérer les dossiers
07 février 2006 17:00:06 :
Simplification et correction
08 février 2006 15:00:22 :
Ajout d'un filtre de listage
08 février 2006 16:29:06 :
Correction de 2,3 trucs
14 février 2006 00:24:58 :
Encore des corrections

 Sources de la même categorie

Source avec Zip EFFACER LES FICHIERS IMAGES ( .PNG ), D'UN RÉPERTOIRE TEMPS ... par christophe0511
COURTE ET SIMPLE FONCTION RÉCURSIVE POUR LECTURE DE RÉPERTOI... par mbdx
Source avec Zip Source avec une capture GESTIONNAIRE DE FICHIERS | MYSQL PHP 5.X {NEMENTON PHP MANA... par Nementon
Source avec Zip Source avec une capture LISTE REPERTOIRE (DIR EN PHP) par mephistope
Source avec Zip LIRE UNIQUEMENT LES X DERNIERS OCTETS D'UN FICHIER DISTANT (... par Equilibrius

 Sources en rapport avec celle ci

Source avec Zip GESTION DE FICHIERS AVEC LA SPL par alphanono
Source avec Zip SURCHARGE DE LA CLASSE RECURSIVEDIRECTORYITERATOR POUR RÉCUP... par Astalavista
Source avec Zip Source avec une capture FONCTION RÉCURSIVE POUR GÉNÉRER UNE ARBORESCENCE DE FICHIERS... par caviar
Source avec Zip Source avec une capture DORY NAVIGATOR: EXPLORATEUR DE FICHIERS ET DE DOSSIERS par kurt67
LISTER LES FICHIERS D'UN DOSSIER ET EN FAIRE DES LIENS ( MEI... par Evangun

Commentaires et avis

Commentaire de FhX le 07/02/2006 15:52:07

Je m'y met en premier !
D'après la doc de PHP :

/* Ceci est la façon correcte de traverser un dossier. */
   while (false !== ($file = readdir($handle))) {
       echo "$file\n";
   }

   /* Ceci est la MAUVAISE façon de traverser un dossier. */
   while ($file = readdir($handle)) {
       echo "$file\n";
   }

Voila, faut au moins corriger ca !

Commentaire de Charles Racaud le 07/02/2006 16:23:37

Voilà, c'est modifier.
Mais peux-tu m'expliquer pourquoi elle était mauvaise ?

Et merci pour ton soutient.

Commentaire de malalam le 07/02/2006 16:34:32 administrateur CS

Hello,

parce que tu peux avoir un fichier qui s'appelle '0', par exemple. Et dans ce cas, ta façon de faire va poser problème : ta boucle va s'arrêter net, car '0' == false. MAIS '0' !== false.

Bon moi, le html alors ;-) :

echo "<B><FONT COLOR=#FF0000>".$CurrentFolder."</FONT></B><br>";
ARGH!

echo '<strong style="color: #ff0000;">',$CurrentFolder,'</strong>br/>';

et encore...vaudrait mieux séparer les styles dans une css. Et utiliser une liste pour liste ça (typiquement, les listes sont faites pour représenter les arborescences!).

Une fonction suffirait, au passage, mais pourquoi comme ça...sauf que tu lis 2 fois chaque répertoire, avec ça : une fois pour afficher les répertoires (et les ouvrir), une fois pour afficher les fichiers.

Commentaire de Charles Racaud le 07/02/2006 17:04:57

>MALALAM

Halàla, que je suis nul.
Mais bon, merci beaucoup pour toutes tes correction.
Je n’avais pas pensé pour le fichier '0' surtout que pour mes testes j'avais mis de numéros mais pas '0' :(
Sinon, pour les styles, c'était juste vite-fait. Le plus important était la fonction.

Commentaire de coucou747 le 08/02/2006 13:50:07

salut

if ($Current !="." && $Current != "..")

pour ça, tu dois utiliser un array, pour plusieus raisons : si un jours, tu cré une partie perso, ou t'as pas envi de lister certains fichiers, alors tu vas en ajouter, et mettre 32 ifs, c'est pas joli... et pour ceux qui sont sous windows XP, alors t'as aussi le fichier .thumbs.db à enlever... Bref, tu dois faire un array...

si ta fonction avait permi un tri par extention, ou par type, ou une reconaissance des types, ou bien qu'il avait été OO, il aurait présenté un interet, mais là... désolé, mais des codes comme ça, on peut en trouver plein...

Commentaire de Charles Racaud le 08/02/2006 15:03:01

Voilà, j'ai rajouté un filtre pour ne pas lister certains fichiers et dossiers et un autre pour ne pas lister certaines extensions.
Voilà, j'espère que comme ca se sera mieux.

Et merci pour tes idées.

Commentaire de coucou747 le 08/02/2006 15:12:36

mais met '.' et '..' dans $SkipObjects...
ça sert à rien de mettre des ==false... mieux vaut ne rien mettre ou mettre des ===false...
et ne mélange pas les " et les '... tu utilises les deux, alors qu'ici, tu ne devrais utiliser que les '...

Commentaire de wizad le 13/02/2006 23:44:09

<b><font color=\"#FF0000\">".$CurrentFolder."</font></b><br />

=> MALALAM : les deux méthodes sont correct (même si la version original présentait quelque erreur). Et je ne vois pas l'utilité d'utiliser les styles ici... (sauf si tu es allergique au <font> et au <b>). De plus un navigateur un peu ancien risque de ne pas comprendre ta version.

=> CHARLES : la syntaxe correct est <br /> et non </br>. Et un autre détail "array('txt', 'php', '.db');" pourquoi utilise tu un point ici : ".db" et pas là "txt"? je ne pense pas que cela soit correct. Dans ce cas les fichiers en .db seront quand même affichés.

Commentaire de Charles Racaud le 14/02/2006 00:37:50

Voilà, c'est encore corriger.
Pour le .db, désolé, c'est moi qui ai pas fait attention, je l'ai rajouté après et j'ai oublié que je ne prenais pas le point en compte dans la fonction.

Pour le reste, je m'enrouille un peu

Apparemment <strong sytle= [...] ></strong> ne marche pas sur les anciens navigateurs.
Mais faut t-il utiliser <font> et <b> que <strong ...> ? (les anciens navigateurs sont de moins en moins utilisé)

Et <br> ca marche, </br> aussi, et ainsi que <br />
On m'a dis d'utiliser <br>, maintenant c'est <br />, quelle est la différence ? Les deux marches pourtant ?

Si quelqu'un peu se prendre un peu de temps pour m'expliquer tout ca, ce serai vachement sympas.
Et désolé de poser des tas de question, mais je débute vraiment dans le monde de l'html, du PHP, et du JavaScript.

Et merci a vous tous pour votre soutient.

Commentaire de wizad le 14/02/2006 01:09:40

concernant <br> il s'agit de l'ancienne norme d'écriture. la nouvelle est <br />. Concernant <font> <b> <strong> il s'agit de différente recommandation et donc différente méthode de faire la même chose. Aprés tout est histoire d'habitude. Il faut aussi préciser que les différente norme sont faite sous forme de recommandation aux webmasters et ne font pas office de vérité absolue. A chaque norme viens son lot de mécontents, de critiques et d'abération (de progrés aussi je te rassure).

Voila en espérant avoir éclairer ta lanterne.

Commentaire de wizad le 14/02/2006 01:14:17

Pour plus d'informations je te conseil de visiter ce site : http://www.w3.org => il s'agt de l'organisation chargé de la normalisation du html.

Commentaire de Charles Racaud le 14/02/2006 11:02:30

Ok, merci je suis éclairé maintenant.
Je vais jeter un coup d'oeil sur le site que tu m’as donné.
Et merci encore.

Commentaire de malalam le 14/02/2006 11:44:59 administrateur CS

<font> est déprécié. Certes, c'est toujoiurs valable dans les anciennes versions du html.
Comme utiliser register_globals à On en php, ou les short-open tags à On...
Les css n'existent que dans les versions récentes de html, et ne sont donc pas mandatory.
Mais, Wizad, quand avance-t-on ?
Les recommendantions du W3C sont aussi des normes, il ne faut pas l'oublier. Et ces normes ont une raison d'être : l'accessibilité. Et l'accessibilité, c'est quand même la philosophie première du net.

Quant à des navigateurs qui ne comprennent pas une css normale, il faudra que tu m'en cites qui soit encore utilisés actuellement... ;-)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Mettre en ligne une arborescence de dossiers et de fichiers [ par hkpsyco974 ] Bonjour tout le monde, je ne sais pas si mon post est bien placé, désolé si ce n'est pas le cas...Mon problème :L'endroit ou je travaille est un cabin CHMOD [ par flaydeer ] Salut, Un peu de mal a suivre sur le chmod, que faut il mettre alors concrètement sur les droits des dossiers et fichiers. Par exempl: j'ai un doss afficher une liste de dossiers et de fichiers sous forme d'arborescence en php [ par boubou2412 ] Bonjour,j'ai un petit probléme concernat l'affichage dans ma page web et j'aimerais bien que vous m'aidez.Bref le probléme quej'ai plusieurs volet et Lecture d'un nom de fichier...2 [ par magicsmacks ] Bonjour, J'avais demandais il y a qq jours ceci : " Bonjour, Je poss&#232;de un dossier sur mon serveur dans lequel lister dossiers uniquements [ par shadow1779 ] Bonjour,il existe dans les codes de nombreux scripts pour lister le contenu d'un dossier, cependant cela liste les fichiers et dossier contenu, je vou Lister tous les fichiers d'un dossier donné [ par lnp ] Comment faire pour lister tous les fichiers d'un dossier donn&#233; En vue de supprimer les fichiers qui ne sont plus n&#233;cessaire au fonctionneme Lister les fichiers d u ndossier [ par Ze_doctor ] Salut tout le monde, J ai regard&#233; apres une source en php pour ca mais aucune ne fonctionne chez moi :/ j ai reussi en rassembalnt quelques bou Sécurité-fichiers-dossiers [ par stageSAP ] Bonjour,Pour mon site, je protège l'accès aux pages grâce aux variables de sessions et cela marche très bien. Je travaille en local pour l'instant. Su Tri de fichiers par date [ par Clem ] Comment trier dans l'orde du plus nouveau au plus vieux, des dossiers ?J'ai trouvé pour afficher les dossiers :&lt;?$rep=opendir('.');while ($file = r Lister les fichiers, sur plusieurs pages [ par jeremytheboss ] Bonjour,Connaissez-vous le code à mettre pour lister le contenu d'un dossier sur plusieurs pages (dixfichiers par pages)Merci de votre réponse, Jérémy


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales