Visualizzazione risultati 1 fino 7 di 7

Discussione: La funzione scandir() non funziona!

  1. #1
    Guest

    Predefinito La funzione scandir() non funziona!

    Volevo provare a fare una lista di tutti i miei files con php.
    Scrivo:
    Codice PHP:
    <html>
    <head>
    <title>Lista files</title>
    </head>
    <body>
    <?php
    echo "Ecco la lista dei files:<br>";
    $dir='/';
    $files=scandir($dir);
    for(
    $i=0;$i<$files;$i++){
    echo
    "Nome file: $files[$i] <br>";
    }
    ?>
    </body>
    </html>
    Eseguo e mi ritorna:
    Codice:
    Ecco la lista dei files:
    
    Fatal error: Call to undefined function: scandir() in /membri/gabryhacker/lista.php on line 9
    Perchè?

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    scandir() e' una funzione del php 5, la stai usando nella directory corretta? altrimenti, glob() dovrebbe funzionare ovunque.

  3. #3
    Guest

    Predefinito

    Grazie, ora funziona, il problema però è che scrive nome file: all'infinito anche se il numero dei files è 3!
    Come posso risolvere?

  4. #4
    Guest

    Predefinito

    L'errore è in:
    Codice PHP:
    for($i=0;$i<$files;$i++)
    $i deve essere minore del numero di elementi dell'array $files

    Ciao

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    o se non vuoi contare, puoi usare foreach:
    Codice PHP:
    echo "<ul>";
    $lista = glob("{$dir}/*");
    foreach (
    $lista as $nome)
    echo
    "<li>Nome file: {$nome}</li>";
    echo
    "</ul>";
    e meno <br>

  6. #6
    Guest

    Predefinito

    Dreadnaut, ho provato il tuo codice, ma non funziona!
    Edit:
    ho provato a modificarlo così:
    Codice PHP:
    <html>
    <head>
    <title>Lista files</title>
    </head>
    <body>
    <?php
    echo "Ecco la lista dei files:<br>";
    $files=glob("/membri/gabryhacker");
    for(
    $i=0;$i<count($files);$i++){
    echo
    "Nome file: $files[$i] <br>";
    }
    echo
    "\n";
    ?>
    </body>
    </html>
    Ma mi restituisce:
    Codice:
    Ecco la lista dei files:
    Nome file:
    Ri-Edit:
    risolto,ho fatto così:
    Codice PHP:
    <html>
    <head>
    <title>Lista files</title>
    </head>
    <body>
    <?php
    echo "Ecco la lista dei files:<br>";
    if (
    $handle = opendir('/membri/gabryhacker/')) {
    echo
    "Handle della directory: $handle<br>\n";
    echo
    "Files:<br>\n";
    while (
    false !== ($file = readdir($handle))) {
    echo
    "$file<br>\n";
    }
    closedir($handle);
    }
    echo
    "\n";
    ?>
    </body>
    </html>
    Fonte: php.net
    Ultima modifica di gabryhacker : 20-06-2008 alle ore 13.33.56

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    glob prende un pattern, non una directory, come primo parametro, quindi se tu gli chiedi "quali file ci sono in /membri/gabrihacker" lui ti risponde "boh, niente", perche' /memberi/gabrihacker e' un file (in particolare una directory), non un pattern. glob('/membri/gabrihacker/*') funziona senza problemi ovviamente.

    opendir e' una soluzione alternativa, se ti piacciono le cose complicate ed old-style, si

    resta che il mio esempio era per mostrarti l'uso di foreach, non di glob

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •