Arbo php code pas top

Résolu
magicshark Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   -  
magicshark Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   -
Bonjours,

j'essaye de faire une arborescence en php mais tout les codes trouvé démarre d'un chemin prédéfini or j'aimerai partir depuis mes lecteurs, et partitions j'ai donc fait ça mais je trouve que c'est très moche...
function ScanVol() 
 { 
  $vol=1; 
  $disk=array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"); 
  foreach($disk as $Directory) 
  { 
    if(@opendir($Directory.":/")) 
    { 
     $tabVol[$vol]=$Directory.":/"; 
     $vol++; 
     @closedir($Directory.":/"); 
    } 
  } 
  return($tabVol); 
 } 

pourquoi faire simple quand on peut faire compliquer j'aime bien aider mais pas
faire vos recherche alors avant de nous poser la question, demander lui=>google
A voir également:

6 réponses

magicshark Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   13
 
up
0
magicshark Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   13
 
re up
0
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
Bonjour,

Il faut utiliser une fonction récursive:

function getDirectory( $path = '.', $level = 0 ){

    $ignore = array( 'cgi-bin', '.', '..' );
    // Directories to ignore when listing output. Many hosts
    // will deny PHP access to the cgi-bin.

    $dh = @opendir( $path );
    // Open the directory to the handle $dh
    
    while( false !== ( $file = readdir( $dh ) ) ){
    // Loop through the directory
    
        if( !in_array( $file, $ignore ) ){
        // Check that this file is not to be ignored
            
            $spaces = str_repeat( ' ', ( $level * 4 ) );
            // Just to add spacing to the list, to better
            // show the directory tree.
            
            if( is_dir( "$path/$file" ) ){
            // Its a directory, so we need to keep reading down...
            
                echo "<strong>$spaces $file</strong><br />";
                getDirectory( "$path/$file", ($level+1) );
                // Re-call this same function but on a new directory.
                // this is what makes function recursive.
            
            } else {
            
                echo "$spaces $file<br />";
                // Just print out the filename
            
            }
        
        }
    
    }
    
    closedir( $dh );
    // Close the directory handle

}



A+
0
magicshark Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   13
 
j'comprend pas bien l'anglais mais je vois pas du tout l'utilité de la récursivité là je souhaite juste affiché mais lecteurs et partitions pas ce qu'ils contiennent, ça c'est le js qui s'en charge très bien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
Bonjour,

CITE: "je vois pas du tout l'utilité de la récursivité"....

C'est pourtant la base d'une programmation efficace pour l'analyse des arborescences dont on ne connait pas la hiérarchie...

https://fr.wikipedia.org/wiki/Algorithme_r%C3%A9cursif

On s'en sert en informatique justement pour le cas que vous citez.

Sinon, vos lecteurs, c'est A: C: D: etc... sous Windows....

Mais ce ne sont pas ces noms là sous Linux ou MacOS.

LE programme est en PHP, donc destiné à tourner sur un serveur, il y a fort à parier que ledit serveur soit à 99,99999% sous Linux/Unix.

Sinon lister vos lecteurs locaux, je vois vraiment pas l'intérêt, même avec la récursivité.

A+
0
magicshark Messages postés 402 Date d'inscription   Statut Membre Dernière intervention   13
 
et bah en faite si je suis débile je sais mais je veux lister mais locaux en faite je veux essayer de faire une appli portable qui pourrai tourner sur ma clef avec MOVAMP et donc a 'louverture je testerai si je suis sous linux ou pas ... Puis pour Linux je suis peut etre a nouveau tres tres débile mais le plus simple pour partir du début c'est juste de partir de la racine // alors que windows les racine sont nos lecteurs
0