Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] kolejność wyświetlania plików w katalogu
Forum PHP.pl > Forum > PHP
adam83

Witam,

Wyświetlam taką oto funkcją zawartość katalogu:


  1.  
  2. <?php
  3. function KATALOG($sciezka)
  4. {
  5.  
  6. $nd =opendir($sciezka);
  7.  
  8. $i=1;
  9.  
  10. while($file=readdir($nd))
  11. {
  12. $p[$i]=$file;
  13.  
  14.  
  15. if ($i>2) echo ('<br><li><a href="'.$sciezka.'/'.$p[$i].'" class="zwykly2" >'.$p[$i].'</a>');
  16.  
  17. $i++;
  18. }
  19. }
  20. ?>
  21.  
  22. echo KATALOG('dypl/egzamin');


W katalogu tym są pliki .doc do których funkcja dopisuje link.
Mam dwa problemy:
1. Jak ustalić kolejność wyświetlania zawartości plików w katalogu?questionmark.gifquestionmark.gif
Nie mam pojęcia jakimi kryteriami php kieruje się wyświetlając linki.. a chciałbym aby były w odpowiedniej kolejności

2. Jesli w nazwie pliku występuje polski znak, wtedy generuje się link z "krzakiem" i oczywiście wywala mi że takiego pliku na serwerze nie ma.. da się coś z tym zrobićquestionmark.gif
darko
1. Zamiast od razu wyświetlać linki w pętli, lepiej wyciągnąć nazwy plików do tablicy, poza pętlą ją posortować (nie piszesz o jakie sortowanie chodzi, więc przyjmuję, że alfabetycznie) i przejechać po całej posortowanej tablicy tworząc linki i je wyświetlać.
2. niestety polskie znaki najlepiej jest od razu usuwać z nazw plików od razu przy kopiowaniu tudzież zapisie pliku na serwerze, bo później są właśnie takie problemy, tutaj wystarczy zwykłe:
  1. $filename = str_replace(array("ą", "ć", "ę", "ł", "ń", "ó", "ś", "ź", "ż"), array("a", "c", "e", "l", "n", "o", "s", "z", "z"), $filename);

i dodaj jeszcze dla samogłosek pisanych dyżymi literami ("Ą", "Ć" itd.)
adam83
wielki dzięki.

Mógłbyś jeszcze dać obszerniejszą podpowiedź odnośnie pktu1 smile.gif? bo kombinuje jak koń pod górę...
darko
  1. function catalogue($dir) {
  2. $return = array();
  3. if (is_dir($dir)) {
  4. if ($dh = opendir($dir)) {
  5. while (($file = readdir($dh)) !== false) {
  6. if($file != "." && $file != "..") {
  7. $return[] = $file;
  8. }
  9. }
  10. closedir($dh);
  11. }
  12. }
  13. else return false;
  14. sort($return, SORT_STRING);
  15. return $return;
  16. }
  17. $path = 'dypl/egzamin';
  18. $temp = catalogue($path);
  19. foreach($temp as $file) {
  20. echo ('<br><li><a href="'.$path.'/'.$file.'" class="zwykly2" >'.$file.'</a>');
  21. }


Kod w ok. 99% za: http://php.net/manual/en/function.opendir.php - naprawdę ciężko tam zajrzeć ?
adam83
wielkie dzięki.. ja troszkę z innej strony kombinowałem.

Pozdrawiam!
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.