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

    Leggere contenuto di una cartella e riordinarlo

    salve a tutti,
    ho trovato questo script che mi permette di leggere file contenuti in una cartella.. chiedo: è possibile ordinarli per data di ultima modifica?

    grazie a chi mi da qualche spunto...

    codice:
    <?
    	function dir_list($directory = FALSE)
    	{
    	$dirs= array();
    	$files = array();
    	$data = array();
    				
    	if ($handle = opendir("./" . $directory))
    	{
    	while ($file = readdir($handle))
    	{
    	if (is_dir("./{$directory}/{$file}"))
    	{
    	if ($file != "." & $file != "..") $dirs[] = $file;
    	}
    	else
    	{
    	if ($file != "." & $file != "..") $files[] = $file;
    	}
    	}
    	}
    	closedir($handle);
    	sort($dirs);
    	sort($files);
    				
    	echo "<ul i>\n";
    	while(list($key, $value) = each($files))
    	{
    	$f+1;
    	echo "[*]<a href=\"./{$value}\" target=\"_blank\">{$value}</a>\n";
    	}
    	echo "[/list]\n";
    				
          if (!$d) $d = "0";
    	if (!$f) $f = "0";
    	}
    				
    	dir_list("./directory/");				
    	?>

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Codice PHP:
    $files glob('tuo_path/*.*');
    $ordinati = array();
    foreach(
    $files as $file) {
    $ordinati[basename($file)] = date('Y-m-d H:i',filemtime($file));
    }
    arsort($ordinati);
    echo 
    '<pre>';
    print_r($ordinati); 

  3. #3
    Originariamente inviato da nicola75ss
    Codice PHP:
    $files glob('tuo_path/*.*');
    $ordinati = array();
    foreach(
    $files as $file) {
    $ordinati[basename($file)] = date('Y-m-d H:i',filemtime($file));
    }
    arsort($ordinati);
    echo 
    '<pre>';
    print_r($ordinati); 
    grazie 1000 .. avevo capito in teoria come funzionava la cosa ma non riuscivo a metterla in pratica..

    come posso fare adesso a scorrere l'array e visualizzare solo il nome del file?

    grazie ancora..

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Codice PHP:
    foreach($ordinati as $k => $v) {
      echo 
    $k.'
    '
    ;

    poi ovviamente usa le liste o ciò che preferisci per visualizzarli.

  5. #5
    Ciao, mi sono imbattuto in questo post mentre cercavo anche io qualcosa del genere.
    Ho inserito la pagina col codice in oggetto su un sito che risiede su aruba e non so per quale motivo mi da errore:
    Warning: opendir(././directory/) [function.opendir]: failed to open dir: No such file or directory in /web/htdocs/www.cercasi-business-fare-dei-soldi.com/home/risparmio/leggere.php on line 9

    Warning: closedir(): supplied argument is not a valid Directory resource in /web/htdocs/www.cercasi-business-fare-dei-soldi.com/home/risparmio/leggere.php on line 23

    Quale puo' essere l'errore?

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    stra lol basta che leggi cosa ti dice.

    Semplicemente la dir che hai messo non esiste. Magari hai sbagliato il path.
    Lo script non controlla se la dir esiste.

    fai una cosa del genere
    Codice PHP:
    $dir_path "path";

    if( 
    file_exists($dir_path) && is_dir($dir_path) )
    {
      
    /*fai cose*/
    }
    else
    {
      
    /*errore la dir non esiste oppure e' un file*/

    EDIT:
    Asd mi ha postato prima che finissi maledetto tab.

    Cmq ovviamente se apri la dir con opendir e poi la chiudi con closedir se la dir non esiste non hai il puntatore alla dir e la close da errore. devi sempre controllare che la dir che cerchi di aprire esista.

  7. #7
    Fatto:


    <?php


    $dir = 'nome directory';
    if($handle = opendir($dir))
    {
    echo 'CONTENUTO:

    ';
    while($file = readdir($handle))
    {
    if($file != '.' && $file != '..')
    {
    echo "<a href=\"{$dir}/{$file}\">$file</a>
    ";
    }
    }
    echo '</p>';
    }
    closedir($handle);
    ?>

    però non mi riesce di visualizzare il nome del file senza l'estensione (facendoli comunque restare dei link). Consigli?

  8. #8
    Ancora meglio:

    <?php
    echo ("<h3>Directory :</h3>");

    function getFiles($path) {
    //Function takes a path, and returns a numerically indexed array of associative arrays containing file information,
    //sorted by the file name (case insensitive). If two files are identical when compared without case, they will sort
    //relative to each other in the order presented by readdir()
    $files = array();
    $fileNames = array();
    $i = 0;

    if (is_dir($path)) {
    if ($dh = opendir($path)) {
    while (($file = readdir($dh)) !== false) {
    if ($file == "." || $file == "..") continue;
    $fullpath = $path . "/" . $file;
    $fkey = strtolower($file);
    while (array_key_exists($fkey,$fileNames)) $fkey .= " ";
    $a = stat($fullpath);
    $files[$fkey]['size'] = $a['size'];
    if ($a['size'] == 0) $files[$fkey]['sizetext'] = "-";
    else if ($a['size'] > 1024) $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " K";
    else if ($a['size'] > 1024*1024) $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb";
    else $files[$fkey]['sizetext'] = $a['size'] . " bytes";
    $files[$fkey]['name'] = $file;
    $files[$fkey]['type'] = filetype($fullpath);
    $fileNames[$i++] = $fkey;
    }
    closedir($dh);
    } else die ("Cannot open directory: $path");
    } else die ("Path is not a directory: $path");
    sort($fileNames,SORT_STRING);
    $sortedFiles = array();
    $i = 0;
    foreach($fileNames as $f) $sortedFiles[$i++] = $files[$f];

    return $sortedFiles;
    }

    $files = getFiles("./");
    foreach ($files as $file) print "<a href=\"$file[name]\">$file[name]</a>
    \n";
    ?>


    pero' i file della lista escono sempre con l'estensione. Come faccio a far visualizzare solo il nome del file?

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Per avere il nome del file senza l'estensione fai così

    Codice PHP:
    $nomefile substr($nomefile,0,strrpos($nomefile,'.')); 

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.