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

    Contare File in Sottocartelle

    Salve, ho un nuovo problema... dunque il mio codice è il seguente:

    <?
    echo "Elenco dei files:

    ";

    if ($cartella = opendir('public/')) {
    while (false !== ($file = readdir($cartella))) {
    if ($file != "." && $file != "..") {
    echo "$file
    ";
    }
    }
    closedir($cartella);
    }
    ?>
    all'interno della cartella PUBLIC sono contenute SOLO altre cartelle (e non file), e vorrei che al fianco della variabile $file mi mettesse il NUMERO di FILE presenti nelle cartelle. avevo provato con questo:

    <?
    echo "Elenco dei files:

    ";

    if (($cartella = opendir('public/))&&($numero = count('$cartella'))) {
    while (false !== ($file = readdir($cartella))) {
    if ($file != "." && $file != "..") {
    echo "$file ($numero)
    ";
    }
    }
    closedir($cartella);
    }
    ?>
    il problema è che mi mette solamente il numero dei file presenti nella PRIMA CARTELLA tipo

    cartella 1 (1)
    cartella 2 (1)
    cartella 3 (1)

    e non ad esempio

    cartella 1 (1)
    cartella 2 (4)
    cartella 3 (5)


    grazie in anticipo

  2. #2
    Di pure addio all'efficienza: devi contarli a mano.

    Codice PHP:
    function contaFile($path)
    {
        
    $count 0;
        
    $dir opendir($path);
        while ((
    $entry readdir($dir)) !== false)
            if (
    is_file($entry))
                ++ 
    $count;

        
    closedir($dir);
        return 
    $count;


  3. #3
    ehm scusa l'ignoranza ma nel codice da te postato dove devo mettere l'URL delle cartelle da contare?

    e cosa vuol dire che devo contarli a mano...?

  4. #4
    Applicando la funzione al tuo esempio avresti una cosa del genere:

    Codice PHP:
    function contaFile($path)
    {
        
    $count 0;
        
    $dir opendir($path);
        while ((
    $entry readdir($dir)) !== false)
            if (
    is_file($entry))
                ++ 
    $count;

        
    closedir($dir);
        return 
    $count;
    }

    echo 
    "Elenco dei files:

    "
    ;

    if (
    $cartella opendir('public/')) {
        while (
    false !== ($file readdir($cartella))) {
            if (
    $file != "." && $file != "..") {
                
    $numero contaFile("public/$file");
                echo 
    "$file ($numero
    "
    ;
            }
        }
        
    closedir($cartella);

    Contare i files a mano vuol dire che contaFile() entra nella directory e controlla i files uno per uno, non c'è una funzione che ti ritorna il numero di files in una directory (e se ci fosse funzionerebbe nello stesso modo di contaFile, perché è il filesystem che non implementa contatori).

    Tradotto: se hai tanti files ci mette un'eternità!

  5. #5
    grazie, anche se al momento mi dice o files nelle mie sottocartelle

  6. #6
    Vero, c'hai ragione! Il path deve essere assoluto, altrimenti non trova una salciccia. Ergo devi sostituire:

    Codice PHP:
    -        if (is_file($entry))
    +        if (
    is_file($path DIRECTORY_SEPARATOR $entry)) 

  7. #7
    sei veramente un grande!!!!!!!!!!!!!!!!!!!!!!!!



    funge!!!

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.