Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] czy da się zrobić - nazwy podfolderów
Forum PHP.pl > Forum > Przedszkole
fredman
moja wiedza z php to poziom początkujący raczej, stad takie pytanie moze głupie trochę.

chciałem zapytać czy jest taka funkcja (lub jakiś sposób), która pobiera nazwy wszystkich istniejących podfolderów ze wskazanego folderu.
wlasnie zacząłem zabawę z obsługą plikow i udało mi sie zrobić parę rzeczy i brakuje mi jeszcze tego jednego.
mam juz takie coś, że ze wskazanego folderu czyta wszytkie obrazki, które się w nim znajduja i tworzy z nich automatycznie galerię.
z tymi folderami chodzi mi o cos podobnego, czyli że tak samo ze wskazanego folderu czyta nazwy ale tym razem właśne folderów a nie plikow.
gox
Podfolderow powiadasz... trzeba zrobic petle, ktora po znalezeniu katalogu is_dir() wlezie do niego, przeczyta wszystko pliki, sciezki dopisze do tablicy a jesli znajdzie kolejny podkatalog znow do niego wlezie i dopisze do tablicy wszystkie grafiki, prosta funkcja 5 linijek smile.gif
antyqjon
glob" title="Zobacz w manualu PHP" target="_manual z flagą GLOB_ONLYDIR smile.gif
fredman
znczy chodzi mi tylko o jedno zagłębienie . czyli mam folder, do ktorego podaje sciezke na sztywno i w nim znajduje się nieokreslona liczba folderów, w których znajduja sie juz tylko pliki ale to jest juz nieistotne bo chodzi tylko o same nazwy tych "iluśtam" folderów.
pyro
  1. <?php
  2. function podfoldery($folder)
  3. {
  4. // funkcja pobiera nazwy podfolderow w folderze podanej w parametrze $folder
  5. $dirs_in = array();
  6. $dir = opendir($folder);
  7. while($one = readdir($dir))
  8. {
  9. if(is_dir($folder.'/'.$one))
  10. {
  11. $dirs_in[] = $one;
  12. }
  13. }
  14. if(count($dirs_in) < 1)
  15. {
  16. return false;
  17. }
  18. // funkcja zwraca tablice zawierającą nazwy podfolderów, lub false jesli nie znaleziono zadnych
  19. return $dirs_in;
  20. }
  21. ?>
antyqjon
@pyro: ta funkcja nie zadziała tak jak trzeba, bo pomyśl co dostaje is_dir (hint: brakuje czegoś w ścieżce).

A można przecież tak...
  1. <?php
  2. glob('nazwa_folderu/*', GLOB_ONLYDIR)
  3. ?>

Prostsze i czytelniejsze. Jak komuś trzeba nazwę wyłącznie podkatalogu, to wycięcie tego to jedna linijka w jakiejś pętli w której używa wartości z tej tablicy.
pyro
antyqjon, dokładnie kiedy pisales posta, ja wyedytowalem swoj kod i juz na 100% bedzie dzialal dobrze smile.gif
fredman
dzięki za szybką pomoc smile.gif użylem funkcji glob w taki sposób:

  1. <?php
  2. $lista = glob('folder/*', GLOB_ONLYDIR);
  3. foreach ($lista as $plik)
  4. echo "$plik<br>";
  5. ?>


tylko, że to zwraca mi wynik w taki sposób:

folder/podfolder1
folder/podfolder2
folder/podfolder3

a chciałbym tak:

podfolder1
podfolder2
podfolder3

da sie jakoś obciąć tą czesć "folder/" ?
antyqjon
A choćby przez:

  1. <?php
  2. str_replace('folder/', '', $plik)
  3. ?>


Lub $lista zamiast $plik, żeby hurtowo sieknąć jeszcze przed pętlą.
fredman
dzięki, działa świetnie !
gox
a lepiej tak:

$folder = explode('/', $folder);
$folder = end($folder);
Kicok
Ewentualnie:
  1. <?php
  2.  
  3.  
  4. $tmpDir = getcwd();
  5. chdir( 'folder/' );
  6.  
  7. $lista = glob( '*', GLOB_ONLYDIR );
  8. foreach( $lista as &$folder )
  9. {
  10. echo $folder . '<br>';
  11. }
  12.  
  13. chdir( $tmpDir );
  14.  
  15. ?>
pyro
jest jeszcze z 1000 sposobów, autor już rozwiązał problem więc po co ciągniecie
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.