Dossier, ss-dossier et fichier PHP

Fermé
Jayz - 10 oct. 2010 à 04:07
Fallentree Messages postés 2295 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 - 5 nov. 2010 à 17:17
Bonjour,
Je tente depuis une ou deux heures, sans succès, à créer une fonction afin d'obtenir les sous-dossier d'un dossier et le nombre de fichier que chaqu'un contient.

Plan :
./ (Racine)
./Icones
./Icones/L1/PNG
./Icones/L1/ICO
./Icones/L2/PNG

J'ai besoin que PHP affiche :
L1 (1550 fichiers)
...PNG (1000 fichiers)
...ICO (550 fichiers)
L2 (X fichiers)


Je connais déja opendir et readdir, mais je n'ai jamais travailler réellement avec ces fonctions.
Un ou une doué pourrais me programmer cela SVP?

Si vous passez à Montréal un jour, je vous offrirez un café en échange (mais pas le billet d'avion, ce n'ai pas dans mes moyens!)

Passez une excellente soirée cher(e)s ami(e)s!

2 réponses

$repertoire = array();

function nb_doc($dir){
   $a = 0;
   $path = opendir ($dir);
    while (false !== ($file = readdir($path))){
         if ($file != "." && $file != ".."){ return 0; }
         
         elseif(is_file($dir.$file)){ return $a++; }

         else{ $a += nb_doc($dir.$file);
         
         $repertoire[$dir] = $a;

    }
    closedir($path);
}

nb_doc("./");

print_r($repertoire);


Je n'ai pas tester, mais sa devrait être quelque chose dans ce style :)
0
J'ai oublier, apres le closedir => return $a;
0
Merci beaucoup Siluni... Mais il y a quelque chose qui cloche et je ne trouve pas ce que c'est, la page php me retourne une page blanche... :(

Merci pour le return $a; je ne l'avais pas remarquer ;)

Si jamais tu as le temps de jeter encore un petit coup d'oeil pour voir ce qui cloche, sinon moi en attendant je continu de regarder.

Passe une bonne journée!
0
Bon, j'ai un peu réussis :


$folders = array();
function nb_doc($dir){
global $folders;
$a = 0;

if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if(is_file($dir.'/'.$file)) {
$a++;
}
if(is_dir($dir.'/'.$file)) {
$folders[$dir.'/'.$file] = nb_doc($dir.'/'.$file);
}
}
}
closedir($handle);
}
return $a;
}

nb_doc('./icons/');
print_r($folders);


Résultat :
Array (
[./icons//Real_Vista_Text/ICO] => 3600
[./icons//Real_Vista_Text/PNG] => 1438
[./icons//Real_Vista_Text] => 0
[./icons//test] => 1
[./icons//This is my new folder] => 0 )


Maintenant je dois tout simplement afficher sa sous forme de Menu Tree...

Merci beaucoup!!!
Et si jamais tu as d'autre améliorations ou conseils, ne te gêne pas! :)
:)
0
Just epour faire suivre... je l'ai. Meric pour ton aide!
0
Fallentree Messages postés 2295 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
5 nov. 2010 à 17:17
je voudrais juste dire un truc sur la recursivité
il semble que l on peut pas compter les fichiers en dehors de la fonction recursive à l'aide d une autre fonction...
par exemple pour cibler le type de fichier ou date de modification sans alourdir la boucle.
C est bizarre... L erreur retourné est ce que ce n est pas un repertoire est pourtant ...
0