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:

<?php  		
	$location = 'mappa';
	$dir = opendir($location);
	$file = readdir($dir);

	while ($file !== false) {
	 	 echo $file . '<br />';
	}
	closedir($dir);	 
?>
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.
<?php
$files = array();
// Megnyitjuk a könyvtárat
if ($handle = opendir($location)) {
  // Végigmegyünk rajta
  while (false !== ($file = readdir($handle))) {
    // Azokat az elemeket listázzuk, amik nem könyvtárak
    if (!is_dir($location .'/'. $file)) {
      $files[] = $file;
    }
  }
  closedir($handle);

  // Rendezzük a tömböt
  natcasesort($files);
  echo implode("\n", $files);
}
?>
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?

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.