View Full Version : [PHP] Script per una lista di file e cartelle data una dir
SaintTDI
14-09-2006, 10:50
Ciao a tutti... :)
Stanotte stavo provando a fare un mio primo script :)
Fare una funziona (ricorsiva) che data una directory (vorrei riuscire a dargli la directory dove si trova il file (usando il ".") ma non ci sono riuscito sotto win :( ) mi salva... o in un array o in una variabile tutte le cartelle e file che ci sono. Ovviamente fino alla fine :) magari se faccio partire lo script da "C:\" mi stampa il nome del file fino all'ultima cartella :)
mi serve perchè facendo cosi... ogni volta che uploado le cartelle con i gol del campionato... non devo cambiare nessun file :)
Non so se già esiste uno script del genere... oppure qualcosa di simile :) stavo provando su http://php.html.it/script ... ma non ho trovato niente :(
qualcuno mi sà aiutare? :)
Fare una funziona (ricorsiva) che data una directory (vorrei riuscire a dargli la directory dove si trova il file (usando il ".") ma non ci sono riuscito sotto win :( ) mi salva... o in un array o in una variabile tutte le cartelle e file che ci sono. Ovviamente fino alla fine :) magari se faccio partire lo script da "C:\" mi stampa il nome del file fino all'ultima cartella :) Guarda e usa le funzioni opendir(), readdir() e closedir(). ;)
SaintTDI
14-09-2006, 11:33
Guarda e usa le funzioni opendir(), readdir() e closedir(). ;)
eh si... infatti stavo stanotte stavo usando quelle funzioni :D anche filetype() e is_dir() per sapere se era un file o una dir... per poi fare la ricorsività solo sulla directory... però mi stavo impicciando... e non ci riuscivo :D sarà stato l'orario :sofico:
più che altro... è che scrivendo is_dir($dir); dove $dir = "."; mi dava errore :( non so se per colpa di windows... oppure no.
Prova questo script:
<?php
function leggiDir (&$list, $dir)
{
if (($hdir = opendir ($dir)) !== FALSE)
{
while (($name = readdir ($hdir)) !== FALSE)
{
if ($name != "." && $name != "..")
{
$fullname = realpath ($dir . "/" . $name);
array_push ($list, $fullname);
if (is_dir ($fullname))
leggiDir ($list, $fullname);
}
}
closedir ($hdir);
}
}
$lista_path = array ();
leggiDir ($lista_path, "C:\\TEMP");
foreach ($lista_path as $path)
{
echo $path . "<br>\r\n";
}
?>
SaintTDI
14-09-2006, 12:26
Prova questo script:
<?php
function leggiDir (&$list, $dir)
{
if (($hdir = opendir ($dir)) !== FALSE)
{
while (($name = readdir ($hdir)) !== FALSE)
{
if ($name != "." && $name != "..")
{
$fullname = realpath ($dir . "/" . $name);
array_push ($list, $fullname);
if (is_dir ($fullname))
leggiDir ($list, $fullname);
}
}
closedir ($hdir);
}
}
$lista_path = array ();
leggiDir ($lista_path, "C:\\TEMP");
foreach ($lista_path as $path)
{
echo $path . "<br>\r\n";
}
?>
grazie :)
con l'aiuto del tuo script sono riuscito a fare questo:
<HTML>
<BODY>
<TABLE WIDTH=40% ALIGN=CENTER BORDER=3>
<TR><TH>ELENCO DEI FILE</TH></TR>
<?php
$dir = '.';
stampa_dir($dir);
function stampa_dir($dir)
{
$cartella = opendir($dir);
while ($file = readdir($cartella))
{
$file_array[] = $file;
}
foreach ($file_array as $file)
{
if ( $file == ".." || $file == ".")
{
continue;
}
$path = realpath ($dir . "/" . $file);
$tipo_file = filetype($path);
echo "<TR><TD><CENTER>";
echo "<a href=\"$path\">$path - tipo file: $tipo_file</a>";
if ($tipo_file == "dir")
{
stampa_dir($path);
}
echo "</CENTER></TD></TR>";
}
}
?>
</TABLE>
</BODY>
</HTML>
ovviamente adesso su Win mi crea il path "C:\programmi\apache\.. " etc etc :) e non mi apre il link.
invece caricando tutto sul server... dovrebbe funzionare senza problemi giusto?
ovviamente adesso su Win mi crea il path "C:\programmi\apache\.. " etc etc :) e non mi apre il link.Invece di usare:
$dir = '.';
usa
$dir = getcwd();
SaintTDI
14-09-2006, 12:42
Invece di usare:
$dir = '.';
usa
$dir = getcwd();
ahime fa la stessa cosa :( mi genera sempre percorso assoluto
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.