Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1579 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  gestionnaire de dossier et fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

gestionnaire de dossier et fichier

n°2127027
bostak
Posté le 18-02-2012 à 14:13:04  profilanswer
 

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
mood
Publicité
Posté le 18-02-2012 à 14:13:04  profilanswer
 

n°2127105
rufo
Pas me confondre avec Lycos!
Posté le 19-02-2012 à 10:05:54  profilanswer
 

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
n°2127112
bostak
Posté le 19-02-2012 à 12:43:51  profilanswer
 

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.

n°2127114
rufo
Pas me confondre avec Lycos!
Posté le 19-02-2012 à 12:55:31  profilanswer
 

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
n°2127118
bostak
Posté le 19-02-2012 à 13:26:24  profilanswer
 

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 ?
 

n°2127151
bostak
Posté le 19-02-2012 à 19:49:17  profilanswer
 

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 ?

n°2127204
rufo
Pas me confondre avec Lycos!
Posté le 20-02-2012 à 09:41:29  profilanswer
 

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
n°2127209
bostak
Posté le 20-02-2012 à 10:04:54  profilanswer
 

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

n°2127217
rufo
Pas me confondre avec Lycos!
Posté le 20-02-2012 à 10:56:56  profilanswer
 

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
n°2127314
bostak
Posté le 20-02-2012 à 16:16:28  profilanswer
 

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

mood
Publicité
Posté le 20-02-2012 à 16:16:28  profilanswer
 

n°2127318
rufo
Pas me confondre avec Lycos!
Posté le 20-02-2012 à 17:18:13  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  gestionnaire de dossier et fichier

 

Sujets relatifs
Compilation parser XML pour intégration à un code CScript de suppresion de fichier temporaire
trier un fichier texteScript batch vérification fichier txt
Macro Ecrire Dossier et sous dossiers Comment peut on instancier un fichier .cs??
Ouvrir fichier avec filename avec accentsLecture et recopie d'une matrice depuis un fichier texte
[bash] ajouter le résultat d'une commande à une ligne dans un fichierProblèmes - Logiciel d'acquisition de temps
Plus de sujets relatifs à : gestionnaire de dossier et fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR