PDA

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? :)

andbin
14-09-2006, 11:18
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.

andbin
14-09-2006, 11:55
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?

andbin
14-09-2006, 12:30
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