|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2003
Città: D-NRW, I-CAM
Messaggi: 8019
|
[php]aiuto con script che crea elenco files
Questo script
Codice:
<? /* se il file è nella cartella radice e vuoi fare la lista dei file di una cartella figlio devi inserire il path, altrimenti non trova la cartella e ti da errore. Se inserisci il carattere "." vuol dire che cercherà nella cartella dove è questo file. Se inserisci il carattere ".." cercherà nella cartella precedente, e così via come in dos. */ $path="c:/Programmi"; /* Questa è la fuzione che apre la directory. Gli va specificato il path ovvimente. La funzione restitusce un valore booleano. */ $dir=opendir("$path"); if($dir){ //la funzione readdir() legge i file presenti nella cartella finché non sono finiti!! while ($file = readdir($dir)){ //controllo di non leggere i file nulli o le directory precendenti if($file != '..' && $file !='.' && $file !=''){ echo "<A HREF=$path/$file>$file</A><br>"; //scrivo un link man mano che trovo file }//fine if }//fine while closedir($dir); clearstatcache(); }//fine if else {echo "IMPOSSIBILE aprore la directory specificata!";}// in caso di errore appare questo! ?> c'è modo di farli apparire in ordine alfabetico? Si può arrivare a Codice:
<?php $path="ladirectory"; $dir = opendir("$path"); if($dir){ while ($file = readdir($dir)) { if($file != '..' && $file !='.' && $file !=''){ $array_files = array("$file"); natsort($array_files); echo "<ul>"; foreach ($array_files as $value => $valore) { echo "<li><a href=\"$path/$valore\">$value - $valore</a></li>"; } echo "</ul>"; }//fine IF } //fine WHILE // ordini l'array in modo NATURALE closedir($dir); clearstatcache(); } else { echo " <h1>Nessun file nella directory specificata!</h1> "; } ?>
__________________
Visit my site www.flapane.com - MY BLOG - MY GALLERY - MY Linux/OSX Repository MBP Retina 13'' i7 2.5ghz (2017) - One Plus 7+ - Sony a6000/16-50 - VDSL 100/40Mbps |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Con un'indentazione migliore si capisce meglio:
Codice:
while ($file = readdir($dir)) { if($file != '..' && $file !='.' && $file !='') { $array_files = array("$file"); natsort($array_files); echo "<ul>"; foreach ($array_files as $value => $valore) { echo "<li><a href=\"$path/$valore\">$value - $valore</a></li>"; } echo "</ul>"; }//fine IF } //fine WHILE Praticamente tu stai usando natsort su un array che contiene un valore, e poi lo mandi subito in output. Prova così: Codice:
while ($file = readdir($dir)) { if($file != '..' && $file !='.' && $file !='') { $array_files[] = $file; }//fine IF } //fine WHILE natsort($array_files); echo "<ul>"; foreach ($array_files as $value => $valore) { echo "<li><a href=\"$path/$valore\">$value - $valore</a></li>"; } echo "</ul>"; |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Dec 2003
Città: D-NRW, I-CAM
Messaggi: 8019
|
Esattamente, avevo il dubbio che l'array si ricreasse ogni volta, è come mi hanno consigliato in un altro forum, grazie.
Inoltre ci sarebbe l'alternativa con glob, che pure conserverò per altre occasioni. Codice PHP:
__________________
Visit my site www.flapane.com - MY BLOG - MY GALLERY - MY Linux/OSX Repository MBP Retina 13'' i7 2.5ghz (2017) - One Plus 7+ - Sony a6000/16-50 - VDSL 100/40Mbps |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:44.