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