Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Grejo
    Registrato dal
    Jan 2003
    Messaggi
    838

    Qualcuno mi può spiegare questo script ... ???

    codice:
    function showDir($dir="./") { 
         $handle = opendir($dir); 
         while ($file = readdir ($handle)) { 
            if (eregi("^\.{1,2}$",$file)) {
              continue; 
         } 
         if(is_dir($dir.$file)) { 
              showDir($dir.$file."/"); 
            } 
            else { 
              echo "<a href='javascript:Richiama_SaveAS()'>";
              //echo "<a href=\"".$file."\">";
    		  echo $file;
    		  echo "</a>
    ";
            } 
         } 
         closedir($handle); 
    } 
    showDir();
    Qualcuno mi può spiegare (riga x riga) questo script che non riesco a capire ... ???
    Ciao, Grejo!

    P.S. = Lasciate pure stare l'else del secondo if che comunque deve essere modificato.
    Nato per essere un vincente, vivo per dimostrarlo!

    Paperino si fà le paperine ed è contento,
    Topolino si fà le topoline ed è contento,
    Pippo non è contento.

  2. #2

    Re: Qualcuno mi può spiegare questo script ... ???

    codice:
    function showDir($dir="./") { 
         $handle = opendir($dir); // apre la directory
         while ($file = readdir ($handle)) { // legge passo per passo i file nella dir fin quando readdir non ritorna false
            if (eregi("^\.{1,2}$", $file)) { // se il nome del file è uguale a . o .. continua
              continue; 
         } 
         if(is_dir($dir.$file)) { // se il file letto è una directory 
              showDir($dir.$file."/");  // richiama la funzione stessa con argomento la dir trovata
            } else { // altrimenti crea un link a $file
              echo "<a href='javascript:Richiama_SaveAS()'>";
    		  echo $file;
    		  echo "</a>
    ";
            } 
         } 
         closedir($handle); // chiude la dir
    } 
    showDir(); // richiama la funzione
    a me sembra che manchi un else
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

  3. #3
    Utente di HTML.it L'avatar di Grejo
    Registrato dal
    Jan 2003
    Messaggi
    838
    A me non sembra ... !!! Ciao, Grejo.
    Nato per essere un vincente, vivo per dimostrarlo!

    Paperino si fà le paperine ed è contento,
    Topolino si fà le topoline ed è contento,
    Pippo non è contento.

  4. #4

    Re: Qualcuno mi può spiegare questo script ... ???

    codice:
    function showDir($dir="./") { 
         $handle = opendir($dir); 
         while ($file = readdir ($handle)) { 
            if (eregi("^\.{1,2}$",$file)) {
              continue; 
         } //Dove stà l'else di questo if?
         if(is_dir($dir.$file)) { 
              showDir($dir.$file."/"); 
            } 
            else { 
              echo "<a href='javascript:Richiama_SaveAS()'>";
              //echo "<a href=\"".$file."\">";
    		  echo $file;
    		  echo "</a>
    ";
            } 
         } 
         closedir($handle); 
    } 
    showDir();

  5. #5

    Re: Qualcuno mi può spiegare questo script ... ???

    Ciao, ci provo ma non garantisto!

    Allora... questa funzione, preso in input una path di una cartella ne visualizza sotto forma di link tutti i files contenuti e scende riscorsivamente nelle sottocartelle.

    codice:
    function showDir($dir="./") { # Inizializza la 
    # funzione. Prende in input una path relativa di una
    # directory. Questo parametro può essere omesso e nel 
    # caso venga omesso prende il valore della cartella
    # in cui risiede lo script che esegue questa funzione.
    
    $handle = opendir($dir); # Istanzia un puntatore
    # alla cartella. Mediante tale puntatore è possibile 
    # leggerne il contenuto. 
    
    # Inizia un ciclo che (ad ogni giro) istanzia in $file 
    # un elemento della cartella (che esso sia un file o una
    # directory non ha importanza in questa rig.)
    # Il ciclo terminerà quano la funzione "readdir" darà un
    # output vuoto.
    while ($file = readdir ($handle)) { 
    
    # Qui viene eseguito un controllo sul tipo di contenuto 
    # della variabile $file. Infatti $file contiene una stringa
    # che può essere indistintamente il nome di un file o di una
    # cartella. C'è inoltre da sapere che ogni cartella contiene
    # sempre la cartella "." che rappresenta "se stessa" e la 
    # cartella ".." che rappresenta la cartella "madre". 
    # Qesta riga serve per identificare queste due cartelle
    # speciali ed evitare di eseguire il codice sottostante
    # per quelle 2 cartelle. Come si verdà questa è una funzione
    # ricorsiva, ed eseguirla su quelle 2 cartelle manderebbe
    # il programma in loop infinito.
    if (eregi("^\.{1,2}$",$file)) { continue; } 
    
    # Questa riga contiene la ricorsività della funzione.
    # Si controlla che $file (ovviamente il suo contenuto
    # attuale!) sia una cartella (funzione "is_dir(path)").
    # Se la condizione viene rispettata si lancia la funzione
    # medesima (sè stessa) sulla nuova path costruita mediante
    # la giunzione della path che si sta visualizzando (l'input
    # della funzione) e il nuovo nome di path identificato.
    if(is_dir($dir.$file)) { showDir($dir.$file."/"); } 
    
    # Qui c'è il ramo "else" del precedente condizionale.
    # ovvero se $file non è una cartella allora è una file
    # (o un link simbolico!) quindi lo visualizzo come link.
    else { 
    echo "<a href='javascript:Richiama_SaveAS()'>";
    echo $file;
    echo "</a>
    ";
    
    } // Fine condizionale sul contenuto di $file
    } // Fine ciclo sul contenuto della directory
    
    # Chiusura del puntatore alla directory
    closedir($handle); 
    
    } // Fine della funzione.
    
    # Lancio la funzione senza parametro. Verrà visualizzato
    # l'albero dei file della cartella che contiene questa
    # riga e delle sue sottocartelle!
    showDir();

    Mi permetto di aggiungere una cosa:

    La ricorsione è una cosa buona. Vale la pena di essere studiata a fondo perchè in genere funziona meglio dell'iterazione e rende il codice più chiuso della compilazione!!!!!

    Ed è + elegante nella stesura di un programma!


    Ciao!
    By Pegoraro Marco
    http://adessoweb.biz- AdessoWEB - Siti web professionali a prezzo accessibile!
    http://consulenza-web.com- Il mio blog!

  6. #6
    Utente di HTML.it L'avatar di Grejo
    Registrato dal
    Jan 2003
    Messaggi
    838
    Ok ... grazie mille ... sei stato chiaro e conciso ... !!! Ciao, Grejo.
    Nato per essere un vincente, vivo per dimostrarlo!

    Paperino si fà le paperine ed è contento,
    Topolino si fà le topoline ed è contento,
    Pippo non è contento.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.