ugrás a tartalomhoz

PHP file listázás

unregistered · 2010. Jún. 24. (Cs), 10.00
Hello!

Olyan gondom van hogy van egy mappa amiben benne vannak file-ok. Ezeket a file-okat kilistázza egy php az oldalon.

Kód:
  1. <?php          
  2.     $location = 'mappa';  
  3.     $dir = opendir($location);  
  4.     $file = readdir($dir);  
  5.   
  6.     while ($file !== false) {  
  7.          echo $file . '<br />';  
  8.     }  
  9.     closedir($dir);    
  10. ?>  
A problémám az, hogy miért nem filenév hanem módosítási idő szerint listázza ki?
Hogy oldom meg hogy filenév szerint listázza? Vagy ez server beállítás?

Előre is köszönöm!
 
1

Sort vagy scandir()

Schmidi · 2010. Jún. 24. (Cs), 10.09
A readdir() abban a sorrendben listázza a fileokat, ahogyan a filerendszerben megtalálja őket.

PHP4 esetén a fileneveket összegyűjtheted egy tömbbe, a tömböt egy sort()-tal rendezheted, és utána már ABC sorrendben tudod kilistázni.

PHP5 esetén használhatod a readdir() helyett a scandir()-t, ennek már gyárilag van rendezési opciója.
2

scandir

Ifju · 2010. Jún. 24. (Cs), 10.10
Próbáld ki a scandir függvényt.

Szerk: Schmidi kollega beelőzött :D
3

:)

Schmidi · 2010. Jún. 24. (Cs), 10.12
@Ifju: a szomszéd témában meg Te engem... 1:1 :)
4

scandir

Poetro · 2010. Jún. 24. (Cs), 10.32
Ahogy olvastad a readdir leírásában:
The filenames are returned in the order in which they are stored by the filesystem.

olyan sorrendben adja vissza amilyenben a fájlrendszer tárolta a fájlokat. Amennyiben nem tetszik ez a sorrend, használhatod a scandir-t PHP 5-től kezdve, vagy kigyűjtheted a fájlneveket egy tömbbe, és utólag rendezed őket.
  1. <?php  
  2. $files = array();  
  3. // Megnyitjuk a könyvtárat  
  4. if ($handle = opendir($location)) {  
  5.   // Végigmegyünk rajta  
  6.   while (false !== ($file = readdir($handle))) {  
  7.     // Azokat az elemeket listázzuk, amik nem könyvtárak  
  8.     if (!is_dir($location .'/'$file)) {  
  9.       $files[] = $file;  
  10.     }  
  11.   }  
  12.   closedir($handle);  
  13.   
  14.   // Rendezzük a tömböt  
  15.   natcasesort($files);  
  16.   echo implode("\n"$files);  
  17. }  
  18. ?>  
5

THX

unregistered · 2010. Jún. 24. (Cs), 11.09
Ez a scandir() nagyon jó/egyszerű/rövid úgyhogy mostantól ezt fogom használni.
Amúgy a legegyszerűbb nem jutott eszembe hogy tömbösítsem és majd sort()...

Köszönöm mindenkinek a segítséget!
6

Jancsika

djcsebi · 2010. Jún. 26. (Szo), 19.05
Én ebben nagyon kezdő vagyok, de ezt nem így kell?
  1. echo $file_name . '<br />';  
Szóval a $file mellé oda írod hogy _name
7

Jogos a meglátás: valóban

Ifju · 2010. Jún. 26. (Szo), 20.12
Jogos a meglátás: valóban sokkal beszédesebb lenne az, ha $file_name lenne az a változó, ami a file-nevet reprezentálja. A program működését nem fogja ez befolyásolni.

Az ilyen névválasztási konvenciók (ahol a változó neve utal arra is, hogy milyen értéket tartalmaz) nagyobb programoknál segítenek sokat az értelmezésben.