Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wylistowanie podfolderow i przypisanie do zmiennych?
Forum PHP.pl > Forum > PHP
rom4n
Witam, potrzebuję napisać skrypt, który przeszuka folder główy na serwerze i wylistuje mi nazwy wszystkich podfolderów. Nie interesuje mnie ścieżka do tych podfolderów, jedynie sama nazwa. Skrypt musi "omijać" folder 'include' tzn niebrać go pod uwagę. Myślalem, żeby przeszukanie zrobić funkcją dir(); ale nie wiem jak zwrócić uwagę funkcji na przeszukanie 'serwera' a nie folderu, oraz jak przekazać tą listę do formularza rozwijanego. Czy potrafi mi ktoś pomuc?
Z góry dziękuję i pozdrawiam.
Jarek
Krzysztof Klimonda
Tzn. chcesz wyciągnąć listę katalogów z innego serwera niż ten na którym uruchamiasz skrypt?

Możesz np. ściągnąć za pomocą curla index z katalogu który chcesz przeszukać (zakładając, że jest to możliwe - jeśli serwer ma wyłączone pokazywanie listy plików lub ma tam wrzuconą "stronę" to po zabawie) a potem odpowiednim wyrażeniem regularnym wyciągnąć wszystkie katalogi pasujące do wzorca jaki sobie wymyślisz..
batman
  1. <?php
  2. $dir = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('nazwa_katalogu'), RecursiveIteratorIterator::SELF_FIRST);
  3.  
  4. foreach ($dir as $file) {
  5. if($file->isDir() && $file->getFilename() != 'include') {
  6. echo $file->getFilename();
  7. echo '<br />';
  8. }
  9. }
  10.  
  11. ?>


Pisałem bez testowania, więc możliwe, że coś może się rozjechać. Instrukcja warunkowa ominie tylko foldery o nazwie include, jednak nie ominie folderów w nich zawartych.
rom4n
Skrypt ma wyszukiwać tylko nazwy folderów znajdujacych się na folderze (root) nie ma przeszukiwać podkatalogów. Tylko jak później mogę przekazać te nazwy do formularza rozwijanego? bo zależy mi na przekazaniu zmiennej z formularza, będącej nazwą wybranego katalogu.
batman
Zakładając, że będziesz miał dostęp do katalogu głównego, możesz to zrobić w taki sposób:

  1. <?php
  2. $dir = new DirectoryIterator('nazwa_katalogu');
  3.  
  4. $adirs = array();
  5.  
  6. foreach ($dir as $file) {
  7. if(!$file->isDot() && $file->isDir() && $file->getFilename() != 'include') {
  8. $adirs[] = $file->getFilename();
  9. }
  10. }
  11.  
  12. ?>
  13.  
  14.  
  15. <form name="formularz" method="post">
  16. <select name="katalogi">
  17. <?php foreach($adirs as $onedir): ?>
  18. <option value="<?=$onedir?>"><?=$onedir?></option>
  19. <?php endforeach; ?>
  20. </select>
  21. </form>
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.