[PHP] Compter des fichiers

Compter des fichiers [PHP] - PHP - Programmation

Marsh Posté le 28-12-2006 à 17:55:43    

:hello:  
 
je chercher à compter des fichier qui sont dans plusieurs dossiers.
 
Pour compter des fichiers dans un dossier ça va, mais plusieurs et dont le nombre peut varier ?
 
pour un y'a ça qui marche :

<?php
$files = glob("dossier/*" );
$compteur = count($files);
echo $compteur;
?>


 
 
merci

Reply

Marsh Posté le 28-12-2006 à 17:55:43   

Reply

Marsh Posté le 28-12-2006 à 18:06:22    

Il te faut un algorithme récursif qui va parcourir l'ensemble de l'arborescence. Un exemple :

Code :
  1. function scan($path)
  2. {
  3. $resultat = 0;
  4. $res = glob($path.'/*' , GLOB_NOSORT);
  5. foreach($res as $file)
  6. {
  7. if (is_dir($file) && $file!='.' && $file!='..')
  8. {
  9. $resultat += scan($path.'/'.$file);
  10. }
  11. else
  12. {
  13. $resultat++;
  14. }
  15. }
  16. return($resultat);
  17. }


Code :
  1. $nombre_de_fichier = scan('/toto'); // pour compter le nombre de fichier présents dans /toto et les eventuels sous dossiers qu'il pourrait contenir


Il y a surement des erreurs car je n'ai pas testé et j'ai lancé ca vite fait mais l'idée est la.


Message édité par afbilou le 28-12-2006 à 18:13:34
Reply

Marsh Posté le 28-12-2006 à 18:11:26    

l'arbo est comme ça :
 
 


[rep]
|
|=>[1]--a/b/c/d
|
|=>[2]--a/b/c/d
|
|=>[3] ...
 


 
je cherche à compter la totalité des fichier a/b/c/d qui peuvent être dans les sous rep de [rep]

Reply

Marsh Posté le 28-12-2006 à 18:15:06    

Oui j'ai bien compris :s

Reply

Marsh Posté le 28-12-2006 à 18:19:53    

ton

$nombre_de_fichier = scan('/toto');

il sert à quoi ici ?

Reply

Marsh Posté le 28-12-2006 à 18:22:07    

Y a kand meme un commentaire a cote de cette ligne pour expliquer !
 
Ca renvoie dans $nombre_de_fichier le nombre de fichiers contenus dans le repertoire /toto et les eventuels sous repertoire que /toto pourrait contenir !

Reply

Marsh Posté le 28-12-2006 à 18:23:19    

parce que je l'ai foutu dans un dossier avec 17 fichier et ça me donne 0 :o
 
et je ne vois pas le lien entre les 2 codes que tu donnes

Message cité 1 fois
Message édité par ginie le 28-12-2006 à 18:23:56
Reply

Marsh Posté le 28-12-2006 à 18:27:14    

Entre temps j'ai peut-etre modifié la fonction scan.
Sinon tu essaies de comprendre comment ca marche histoire de debugger ou tu n'y connais rien et tu attends sagement qu'on te donne tout ?

Reply

Marsh Posté le 28-12-2006 à 18:28:32    

bien sûr que j'essaye de comprendre
et j'ai aussi vu que tu avais fait une modif dans le code

Reply

Marsh Posté le 28-12-2006 à 18:33:04    

ginie a écrit :

parce que je l'ai foutu dans un dossier avec 17 fichier et ça me donne 0 :o
 
et je ne vois pas le lien entre les 2 codes que tu donnes


Bah le lien c'est ke la premiere partie represente la definition d'une fonction que j'ai appellé scan.
La deuxieme partie j'appelle la fonction avec comme argument pour la recherche la chaine '/toto' pour que la fonction scan s'execute avec /toto comme point de depart.

Reply

Marsh Posté le 28-12-2006 à 18:33:04   

Reply

Marsh Posté le 28-12-2006 à 18:36:52    

je peux mettre tout ce que je veux à scan(''), ça sort toujours 0

Reply

Marsh Posté le 28-12-2006 à 18:42:39    

montre le code a tout hasard.
pour debugger n'hesite pas a mettre des echo un partout dans la fonction scan pour voir si la fonction parcourt les dossiers recursivement, quels fichiers elle rencontre, combien de fois la fonction est appellée, connaitre la valeur de certaines variable comme $resultat et $res.
 
Voila n'ayant pas de quoi tester sur place je ne peux pas te proposer plus comme aide.

Reply

Marsh Posté le 28-12-2006 à 18:57:51    

un echo de $res me donne "array"

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed