|
|||||||
|
|
|
![]() |
|
|
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: 12:46.



















