Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    ordinare per nome file in una directory

    ciao a tutti...

    questa funzione che ora vi scrivo legge e stampa a video i file contenuti nelle cartelle e nelle sottocartelle ricorsivamente...solo che non li ordina

    qualcuno mi sa modificare questa funzione in modo che per ogni cartella ci sia la lista di file ordinati per nome?

    se avete già altro di pronto va bene lo stesso :-)
    è URGENTE

    grazie mille in anticipo



    function ScanDirectory($Directory){
    $MyDirectory = opendir($Directory) or die('Errore');
    while($Entry = readdir($MyDirectory)) {
    if(is_dir($Directory.'/'.$Entry)&& $Entry != '.' && $Entry != '..') {
    echo '<ul>'.$Entry;
    ScanDirectory($Directory.'/'.$Entry);
    echo '[/list]';
    }
    else {
    if($Entry != '.' && $Entry != '..'){
    $cartellautente = $Directory."/".$Entry;
    echo '[*]'."<a href=\"downloadit.php?file={$cartellautente}\">{$E ntry}</a>
    ".'';
    }
    else continue;
    }
    }
    closedir($MyDirectory);
    }

  2. #2
    Vedi se può andar bene così:

    codice:
    function ScanDirectory($Directory) {
    
       $MyDirectory = opendir($Directory) or die('Errore');
       while ($currentFile = readDir($MyDirectory)) {
          $theFiles[] = $currentFile;
       };
       closedir($MyDirectory);
    
       $Files = preg_grep("/^[A-Za-z0-9]/", $theFiles);
    
       sort($Files);
    
       echo '<ul>';
       foreach($Files as $Entry) {
          if(is_dir($Directory.'/'.$Entry)) {
             echo '[*]'.$Entry;
             ScanDirectory($Directory.'/'.$Entry);
             echo '';
          } else {
             $cartellautente = $Directory."/".$Entry;
             echo '[*]'."<a href=\"downloadit.php?file={$cartellautente}\">{$Entry}</a>
    ".'';
          }
       }
       echo '[/list]';
    }
    Come vedi inizialmente mi scarico tutta la directory in un array.
    Poi elimino il "." e il ".." con la preg_grep.
    Poi ordino.
    E infine faccio un foreach sull'array analogo al while che facevi tu.
    Ho anche dato una sistemata agli <ul>.

    Ti faccio notare che nell'ordinamento su Linux le maiuscole vengono prima delle minuscole, quindi troverai prima i nomi che iniziano con maiuscole, ordinati, e poi, dopo la "Z" si ricomincia con la "a".

    Il risultato non è molto bello, a mio avviso, però il sort lavora così.

    Fino a lunedì non mi ricollegherò al forum quindi se non ti va bene spero che possa aiutarti qualcun altro.

    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.