Jesteś tutaj: webmade.org >> porady >> php + mysql
autor: Mateusz Bogolubow, ostatnia modyfikacja: 2007-02-23
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
szukaj: listowanie plików lista plików php
Osoby czytające tę publikację przeglądały również:
© 2004-2008 copyright by webmade.org