Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Listowanie folderów
Forum PHP.pl > Forum > Przedszkole
-lukasz.bib-
Witam Serdecznie!
Łukasz Bolda z tej strony smile.gif

Niedawno rozpocząłem naukę php. Postawiłem sobie apache na linux i wszystko pięknie działa.
Napisałem sobie coś w rodzaju szablonu strony w php, który automatycznie generuje menu na podstawie przeszukiwania listy plików.

Na localhost wszystko pięknie działa. Plików jest mało.

Oto funkcja wyświetlająca treść menu:
  1. <?php
  2. function categories(){
  3. $folder = dir('categories');
  4. echo ('<ul>');
  5. echo("<li><a href=\"index.php\">Strona główna</a></li>");
  6. while(($plik = $folder->read())&&($plik!='.')&&($plik!='..'))
  7.  echo ('<li><a href="index.php?c=' .$plik. '">' .ucfirst($plik). '</a></li>');
  8. echo ('</ul>');
  9. $folder->close();
  10.  }
  11. ?>


Te same pliki wrzuciłem na serwer: http://www.gryescapetheroom.ovh.org/index.php
I tutaj już się nie wyświetla menu. Dałem nawet chmod 777 wszystkim plikom i nadal nic...

Proszę o pomoc smile.gif
artega
Ten kawałek kodu
  1. <?php while(($plik = $folder->read())&&($plik!='.')&&($plik!='..')) ?>

stwarza problemy. Odczytujesz w nim nazwę pliku po czym sprawdzasz czy jest on '.' lub '..' jeżeli tak to przerywa pętle, dlatego nie wyświetla dalszych wyników. Zastosuj poniższe rozwiązanie.
  1. <?php
  2. function categories()
  3. {
  4. $folder = dir('categories');
  5. echo ('<ul>');
  6. echo("<li><a href=\"index.php\">Strona glowna</a></li>");
  7. while (false !== ($plik = $folder->read()))
  8. {
  9. if ($plik == '.' or $plik == '..') continue;
  10.  
  11. echo ('<li><a href="index.php?c=' .$plik. '">' .ucfirst($plik). '</a></li>');
  12. }
  13. echo ('</ul>');
  14. $folder->close();
  15. }
  16.  
  17. categories();
  18. ?>
-lukasz.bib-
Wielkie dzięki!
Mój błąd :-). Czy to jest jedyny sposób, żeby nie wyświetlał . i .. ?
Jakoś tak zrobiłem chyba nieelegancko.

Od czego zależy kolejność wyświetlania plików przy listowaniu
folderu? Raz mam tak raz inaczej...

Bardzo mi pomogłeś :-)
-lukasz.bib-
Temat rozwiązany - można [solved] i zamknąć smile.gif
gox
czasem rzeczywiscie kolejnosc listownia jest dziwna...

  1. <?php
  2. $a = array();
  3. $d = opendir('./');
  4. while(($f = readdir($d)) !== FALSE) {
  5. if ($f != '.' && $f != '..')
  6. array_push($a, $f);
  7. }
  8. sort($a);
  9. // i mamy posortowane w kolejnosci alfabetycznej
  10. // sory za sporo szybszy lamerski model proceduralny
  11. ?>
Pilsener
Nie prościej użyć glob" title="Zobacz w manualu PHP" target="_manual?
-lukasz.bib-
Wielkie Dzięki wszystkim!
Jesteście wspaniali! Na żadnym forum nie odpowiadają tak szybko i fachowo!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.