Newsgroup: it.comp.www.php
Titolo: leggere cartelle e file da script

	$DirPath="grafica";
	if($DirPath=="") {
		$DirPath='grafica';
	}
	if ( $handle=opendir($DirPath) ) {
    	while ( $node = readdir($handle) ) {
        	$nodebase = basename($node);
        	if ($nodebase!="." && $nodebase!="..") {
            	if(is_dir($DirPath.$node)) {
                	$nPath=$DirPath.$node."/grafica";
                	echo "-> -> -> <a href='dir.php?DirPath=$nPath'>
$node</a><br>";
            	} else {
					// CONTROLLO SE IL NOME DELLA CARTELLA ESISTE IN CAMPIONI
					$cartella = mysql_real_escape_string ($node);
					$sql_directory = "SELECT grafica_dir FROM grafica WHERE
grafica_dir ='".$cartella."' ";
					$result_directory = mysql_query($sql_directory) or die("Errore:
" . print $sql_directory );
					$row_directory = mysql_fetch_array($result_directory);
					$directory=$row_directory[0];
					// SE ESISTE...
					if ($directory == $node)  {
						//echo "<td>Cartella gia inserita</td>";
					} else {
						// CREAZIONE DEL NOME DELLA CARTELLA IN CAMPIONI SE NON ESISTE
						$cartella2 = mysql_real_escape_string ($node);
						$sql = "INSERT INTO grafica (grafica_dir) VALUES ('".
$cartella2."')";
						mysql_query ($sql);
						//echo "<td><strong>Inserito</strong></td>";
					}
				}
        	}
    	}
	}
	closedir($handle);
con questo script dichiaro di leggere tutti i file contenuti nella
cartella principale "grafica" e relative sottocartelle secondarie
ma se io creo una ulteriore cartella dentro la cartella secondaria
come faccio riconoscere come tale e vada a leggere i file in questa 3
cartella della root? e scriverla nel db?
spero essere stato chiaro nella mia rich di aiuto

 cartella della root? e scriverla nel db?
L'attraversamento di un filesystem e' uno degli esercizi base per
l'implementazione di funzioni ricorsive (gl ialtri sono il fattoriale, i numeri
di Fibonacci e queste specie di cose).
in sostanza, crei una funzione piu' o meno cosi'
function leggidirectory($d) {
	leggi_elemento(d$)
	case:
		'.' o '..': ignora; break;
		e'_un_file: registra i dati nel database; break;
		e'_una_dir: leggidirectory($d . nomedir); break;
	fine_case;
}
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Can anything be sadder than work left unfinished? Yes, work never begun.

ok
ma quando trova la cartella dovrebbe entrare dentro quella cartella e
leggermi i vari file all'interno
come posso fare?


 leggermi i vari file all'interno
Che e` esattamente quello che fa il codice di Luigi...
Quota bene, per favore (Google: "quotare bene")
Bye.

 come posso fare?
con una funzione ricorsiva, in sostanza, crei una funzione piu' o meno cosi'
function leggidirectory($d) {
	leggi_elemento(d$)
	case:
		'.' o '..': ignora; break;
		e'_un_file: registra i dati nel database; break;
		e'_una_dir: leggidirectory($d . nomedir); break;
	fine_case;
}
:) :) :)
Scherzi a parte, se vedi la definizione della funzione, noterai che la funzione
si chiama leggidirectory($d) e al suo "interno" c'e' la chiamata alla funzione
leggidirectory().
Quando nella dichiarazione di una funzioni richiami la funzione stessa, stai
creando una funzione ricorsiva, che e' un modo elegantissimo sia per risolvere
problemi pallosi da risolvere per iterazione(*) sia per occupare un sacco di RAM :)
Ciao,
luigi
(*) ogni funzione ricorsiva puo' essere sviluppata con una funzione iterativa
che fornisce il medesimo risultato.
-- 
/
+--[Luigi Rosa]--
\
Di solito ci si convince meglio con le ragioni trovate da se stessi
che non con quelle venute in mente ad altri.
    --B. Pascal