gestionnaire de dossier et fichier

gestionnaire de dossier et fichier - PHP - Programmation

Marsh Posté le 18-02-2012 à 14:13:04    

Bonjour,
 
Je viens vers vous pour avoir un petit coup de main sur une fonction qui ne fonctionne pas comme je le souhaite, voici la fonction :
 

Code :
  1. function list_dir($name, $level=0) {
  2.   if ($dir = opendir('./files/'.$name.'')) {
  3.     while($file = readdir($dir)) {
  4.       for($i=1; $i<=(4*$level); $i++) {
  5.           echo "&nbsp;";
  6.       }
  7.       echo "$file<br>\n";
  8.       if(is_dir($file) && !in_array($file, array(".",".." ))) {
  9.         list_dir($file,$level+1);
  10.       }
  11.     }
  12.     closedir($dir);
  13.   }
  14. }


 
et l’appelle de ma fonction que voici :
 
list_dir("." );
 
C'est donc une fonction récursive, qui doit lister mes fichiers et sous-dossiers présent dans le dossier "files" et cela ne fonctionne pas vraiment, cela me liste bien mes dossier et fichiers mais pas les sous dossiers et sous fichiers.
Alors que si ici :
 if ($dir = opendir('./files/'.$name.''))
 
je remplace par ceci : if ($dir = opendir($name))
Cela me liste tout les sous dossiers et fichiers du répertoire ou est mon site.
 
Je ne comprend donc pas pourquoi cela ne fonctionne pas ?
 
Cordialement,


Message édité par bostak le 18-02-2012 à 14:13:49
Reply

Marsh Posté le 18-02-2012 à 14:13:04   

Reply

Marsh Posté le 19-02-2012 à 10:05:54    

Va sur http://fr2.php.net/manual/fr/function.readdir.php
 
Y'a des ex de lecture récursive de répertoires...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-02-2012 à 12:43:51    

je viens d'utiliser celle ci :
 

Code :
  1. function read_folder_directory($dir = "root_dir/dir" )
  2.     {
  3.         $listDir = array();
  4.         if($handler = opendir($dir)) {
  5.             while (($sub = readdir($handler)) !== FALSE) {
  6.                 if ($sub != "." && $sub != ".." && $sub != "Thumb.db" && $sub != "Thumbs.db" ) {
  7.                     if(is_file($dir."/".$sub)) {
  8.                         $listDir[] = $sub;
  9.                     }elseif(is_dir($dir."/".$sub)){
  10.                         $listDir[$sub] = read_folder_directory($dir."/".$sub);
  11.                     }
  12.                 }
  13.             }
  14.             closedir($handler);
  15.         }
  16.         return $listDir;
  17.     }


 
et je l'apelle comme ceci :
 

Code :
  1. $files = read_folder_directory ($_SERVER["DOCUMENT_ROOT"].'/filer/files');
  2. if ($files)
  3. {
  4.      foreach ($files as $file)
  5.      {
  6.            echo $file."<br/>";
  7.      }
  8. }


 
mais cela m'affiche :
 
Array
Array
Array
Array
toto.txt
 
je ne comprend pas trop leur exemples.

Reply

Marsh Posté le 19-02-2012 à 12:55:31    

utilises plutôt le code de mrlemonade (09-Jul-2011 03:34)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-02-2012 à 13:26:24    

d'accord mais pourriez vous m'aider ? car je ne comprend pas vraiment comment me servir de son code.
 

Code :
  1. function getFilesFromDir($dir) {
  2.   $files = array();
  3.   if ($handle = opendir($dir)) {
  4.     while (false !== ($file = readdir($handle))) {
  5.         if ($file != "." && $file != ".." ) {
  6.             if(is_dir($dir.'/'.$file)) {
  7.                 $dir2 = $dir.'/'.$file;
  8.                 $files[] = getFilesFromDir($dir2);
  9.             }
  10.             else {
  11.               $files[] = $dir.'/'.$file;
  12.             }
  13.         }
  14.     }
  15.     closedir($handle);
  16.   }
  17.   return array_flat($files);
  18. }
  19. function array_flat($array) {
  20.   foreach($array as $a) {
  21.     if(is_array($a)) {
  22.       $tmp = array_merge($tmp, array_flat($a));
  23.     }
  24.     else {
  25.       $tmp[] = $a;
  26.     }
  27.   }
  28.   return $tmp;
  29. }


 
car il y a deux fonctions et il y a ceci aussi :
 

Code :
  1. // Usage
  2. $dir = '/data';
  3. $foo = getFilesFromDir($dir);
  4. print_r($foo);


 
Pourriez vous m'aider à le mettre en place ?
 

Reply

Marsh Posté le 19-02-2012 à 19:49:17    

j'ai pas mal travaillé dessus je n'arrive pas à la mettre en place car j'ai plein d'erreur au niveau de la deuxième fonction il me dit :
Notice: Undefined variable: tmp  
 
je trouve cela étrange et ces erreurs viennent du return $tmp;
j'ai fais un var_dump sur $tmp et il contient bien tout ce qu'il faut pourtant.
 
Une idée ?

Reply

Marsh Posté le 20-02-2012 à 09:41:29    

ligne 23, tu rajoutes : $tmp = array();


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-02-2012 à 10:04:54    

merci j'ai maintenant plus d'erreur mais une page blanche, je ne sais plus quoi faire

Reply

Marsh Posté le 20-02-2012 à 10:56:56    

t'as mis quoi comme répertoire dans $dir = '/data';
un qui existe au moins?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-02-2012 à 16:16:28    

oui j'ai mis un dossier qui existe et quand je fais un var_dump de $tmp il y a bien tout ce qu'il me faut dedans, c'est étrange

Reply

Marsh Posté le 20-02-2012 à 16:16:28   

Reply

Marsh Posté le 20-02-2012 à 17:18:13    

postes ton script complet, svp.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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