webmaster webmastering webdesign

Jesteś tutaj: webmade.org >> porady >> php + mysql

Lista plików

autor: Mateusz Bogolubow, ostatnia modyfikacja: 2007-02-23

szukaj: listowanie plików listowanie plików lista plików lista plików php php

Przypuśćmy, że w lokalizacji której mamy plik z kodem php znajduje się folder 'gfx' w którym mamy zbór grafik. Chcemy stworzyć listę tych plików - sprawa nie jest dość skomplikowana:

<?php
$folder = dir('gfx');

echo '<ul>';
while($plik = $folder->read()) echo '<li><a href="' .$plik. '">' .$plik. '</a></li>';
echo '</ul>';

$folder->close();
?>

My jednak spróbujemy czegoś trudniejszego - podzielić je według typu... kod takiego skryptu może(jest zapewne dużo innych rozwiązań tego problemu) wyglądać tak:

<?php

$folder = dir('gfx');

while($plik = $folder->read()) {

if (($plik != '.') AND ($plik != '..')) {

 $nazwa = pathinfo($plik);
 $pliki[$nazwa['basename']] = $nazwa['extension'];

 $dodaj = true;
 for($i=0;$i<count($typ);$i++)
  if ($typ[$i] == $nazwa['extension']) $dodaj = false;
 
 if ($dodaj == true) $typ[] = $nazwa['extension'];
 }

}

$folder->close();

for($i=0;$i<count($typ);$i++) {
 echo '<ul>'.$typ[$i];
 foreach($pliki as $klucz => $wartosc)
  if ($wartosc == $typ[$i]) echo '<li><a href="' .$klucz. '">' .$klucz. '</a></li>';
 echo '</ul>';
}

?>

Pierwsza cześć nie wiele różni się od wcześniejszego. Otwieramy wybrany folder i go przeszukujemy z pomocą pętli while. Dalsza część to już inna bajka...

if (($plik != '.') AND ($plik != '..')) {
[...]
}

Warunek ten pomija 'linki' do folderów wyżej.

$nazwa = pathinfo($plik);
$pliki[$nazwa['basename']] = $nazwa['extension'];

Funkcja pathinfo() tworzy tablicę o trzech kluczach

Korzystając z tej funkcji tworzymy własna tablicę $pliki o kluczu 'nazwa pliku' i wartościach 'rozszerzenie'.

$dodaj = true;
for($i=0;$i<count($typ);$i++)
 if ($typ[$i] == $nazwa['extension']) $dodaj = false;
 
if ($dodaj == true) $typ[] = $nazwa['extension'];

W tablicy $typ przechowujemy nazwy rozszerzeń. Powyższy kod sprawdza czy dany typ znajduje się w tablicy. Jeśli tak nie jest zostaje on dopisany do tablicy.

Po zamknięciu folderu wyświetlamy dane za pomocą pętli for i konstrukcji foreach.

for($i=0;$i<count($typ);$i++) {
 echo '<ul>'.$typ[$i];
 foreach($pliki as $klucz => $wartosc)
  if ($wartosc == $typ[$i]) echo '<li><a href="' .$klucz. '">' .$klucz. '</a></li>';
 echo '</ul>';
}

Dzięki pętli for przeglądamy tablicę $typ, zaś konstrukcja foreach przychodzi nam z pomocą przy pobieraniu kluczy i wartości tablicy $pliki.

Mateusz Bogolubow

Osoby czytające tę publikację przeglądały również:

Chcesz zostać programistą?

Poznaj 6 kroków do efektywnej
nauki programowania!

 

valid XHTML
valid CSS
© 2004-2008 copyright by webmade.org