Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Listowanie folderów, Działa na localhost, na serwerze nie
--lukasz.bib--
post
Post #1





Goście







Witam Serdecznie!
Łukasz Bolda z tej strony (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
artega
post
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
--lukasz.bib--
post
Post #3





Goście







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ś :-)
Go to the top of the page
+Quote Post
--lukasz.bib--
post
Post #4





Goście







Temat rozwiązany - można [solved] i zamknąć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
-gox-
post
Post #5





Goście







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. ?>
Go to the top of the page
+Quote Post
Pilsener
post
Post #6





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Nie prościej użyć glob" title="Zobacz w manualu PHP" target="_manual?
Go to the top of the page
+Quote Post
--lukasz.bib--
post
Post #7





Goście







Wielkie Dzięki wszystkim!
Jesteście wspaniali! Na żadnym forum nie odpowiadają tak szybko i fachowo!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 14:56