Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyświetlanie zawartości katalogu i nie tylko
Forum PHP.pl > Forum > Przedszkole
-Grzegorz_S-
witam serdecznie,

mam taki kod
  1. <?php
  2. $sciezka = "test";
  3. $lista=array();
  4. $katalog = opendir($sciezka);
  5. while ($plik = strtolower(readdir($katalog))) {
  6. if (($plik<>".")&&($plik<>"..")) if(!is_dir($sciezka.$plik))
  7. $lista[]=$plik;
  8. }
  9. closedir($katalog);
  10.  
  11. $l=0;
  12. for ($i=0;$i<count($lista);$i++) {
  13. $l++;
  14. echo "$l) <a href=\"/$lista[$i]\">$lista[$i]</a><br>";
  15. }
  16. ?>

wyświetla mi on zawartość folderu test w postaci linków Jednocześnie chciałbym uzyskać jeszcze 2 funkcjonalności a mianowicie:

- chciałbym aby kliknięcie na link który prowadzi do pliku na przykłąd z rozszerzeniem *.txt otwierał go i żebym mógłzobaczyć jegozawartość
- chciałbym również aby kliknięcie w link który prowadzi do katalogu otwierało ten katalog i ponownie w postaci linków wyświetlało jego zawartość

licze na pomoc

pozdrawiam
freemp3
Powinieneś dodać do linków parametry $_GET, w których przekażesz nazwę aktualnie otwartego katalogu lub / oraz nazwy pliku.
Gość
nie za bardzo wiem co by mi to dało jak przekaże.

Bo jak rozumiem to musiąłbym przekazywać to w tej linicje echo "$l) <a href=\"/$lista[$i]\">$lista[$i]</a><br>";

pozdrawiam
Turson
W $_GET przekazujesz nazwę katalogu/pliku
  1. $sciezka = isset($_GET['katalog']) ? $_GET['katalog'] : "test";

choć, żeby dostać się najgłębiej to albo przekazujesz ścieżkę począwszy od katalogu głównego albo wchodzisz coraz głębiej rekurencją mając katalog nadrzędny
Gość
szczerze mówiąc nie mogę ogarnąc tych GET-ów
markuz
Utwórz sobie plik index.php i wrzuć do niego ten kod:
  1. # index.php
  2.  
  3. $activeDir = isset($_GET['dir']) ? $_GET['dir'] : '/';
  4.  
  5. $dirs = array(
  6. 'test',
  7. 'katalog',
  8. 'jeszcze_inny_katalog'
  9. );
  10.  
  11. foreach($dirs as $dir)
  12. {
  13. echo '<a href="index.php?dir='.$dir.'">'.$dir.'</a><br/>';
  14. }
  15.  
  16. echo 'Aktualny katalog: <b>'.$activeDir.'</b>';


A potem kombinuj i zmień to dla potrzeb twojego skryptu.
Gość
chyba nie do końca się rozumiemy albo ja nie umiem wykorzystać tego kodu.

mój klod generuje cos takiego

1. plik.txt
2. plik1.txt
3. plik2.txt
4. folder

wszystkie wyrzej przedstawione elementy sa linkami i teraz chodzi mi aby mój skrypt był wzbogacony o takie coś:

- jeżeli kliknę na link 1. plik.txt to otworzy mi się notatnik z zawartością analogicznie z reszta plików
- jeżeli kliknę na link 4. folder to wyświetli mi się zawartość tego folderu analogicznie jak to widaćpowyżej


pozdrawiam
Gość
Witam a więc nastąpił przełom
  1. <?php
  2. $sciezka = isset($_GET['katalog']) ? $_GET['katalog'] : "test";
  3. $lista=array();
  4. $katalog = opendir($sciezka);
  5. while ($plik = readdir($katalog)) {
  6. if (($plik<>".")&&($plik<>"..")) if(!is_dir($sciezka.$plik))
  7. $lista[]=$plik;
  8. }
  9. closedir($katalog);
  10. foreach($lista as $katalog){
  11. echo "<a href=\"index.php?katalog=$katalog\">$katalog</a><br>";
  12. }
  13. ?>

teraz faktycznie działa to przekazywanie katalogu ale jak klikamw dany folder ktory mam w tym katalogu test towywala mi blad tresci
Warning: opendir(folder) [function.opendir]: failed to open dir: No such file or directory in C:\Przydatne\joomla\xampp\htdocs\test\index.php on line 4

sprawdziłem więc sobie funkcją is_dir czy odczytywane przezemnie pliki są folderami i skrypt uwaza ze w katalogu test niema zadnego podrzednego folderu a on sie tam fizycznie znjaduje. Generalnie bład mam taki że nie widzi tego folderu niestety.

sugestie mile widziane

pozdrawiam
markuz
  1. $sciezka = isset($_GET['katalog']) ? '/'.$_GET['katalog'] : "/test";
Gość
ta zmiana nie wniosla nic nowego nadal nie chce mi wyswietlic zawartosci folderu i twierdzi że folder nie jest folderem.
markuz
#index.php

  1. <?php
  2.  
  3. if(isset($_GET['path']))
  4. {
  5. $path = $_GET['path'].'/';
  6. }
  7. else
  8. {
  9. $path = 'files/';
  10. }
  11.  
  12. $dir = opendir($path);
  13.  
  14. while($file = readdir($dir))
  15. {
  16. if(is_dir($path.$file))
  17. {
  18. echo '<a href="index.php?path='.$path.$file.'">'.$file.'</a><br/>';
  19. }
  20. else
  21. {
  22. echo $file.'<br/>';
  23. }
  24. }
  25.  
  26. closedir($dir);
  27.  
  28. ?>


Struktura:

index.php
files
- file.txt
- test
- folder

Gość
witam,

dzieki markuz ze tyle czasu mi poswiecasz ale teraz mam kolejny porblem
Nie znaleziono obiektu! - taki mi sie wyswietlak omunikat jak klikam na folder

twoj kod bardzo uproscił skrypt za to dziekuje ale dlaczego nie widzi tego dokumentu tego nie za bardzo wiem
markuz
Podaj URL przy którym Ci się wyświetla ta informacja oraz strukturę katalogów/plików w projekcie.

Przeanalizuj kod linijka po linijce. Jeżeli którejś nie rozumiesz - napisz a postaramy Ci się to wytłumaczyć.

Jeżeli nie piszesz tego skryptu na "zlecenie" bądź w jakiś innych "ważnych" celach typu praca domowa czy konkurs to polecam Ci zacząć od czegoś prostszego smile.gif
Gość
link ----> http://www.localhost.com/test/index.php?path=test/testfolder

struktura to:

C:\Przydatne\joomla\xampp\htdocs\test\test\
test1.txt
test2.txt
test3.txt
testfolder
test_folder1.txt
test_folder2.txt
folder

generalnie to nie jest to zlecenie a raczejprzysługa z której bardzo chciałbym się wywiązać.
Turson
Cytat(markuz @ 13.03.2014, 18:28:19 ) *
prostrzego smile.gif

baaasmiley.gif


Cytat(Gość @ 13.03.2014, 19:09:26 ) *
link ----> http://www.localhost.com/test/index.php?path=test/testfolder

struktura to:

C:\Przydatne\joomla\xampp\htdocs\test\test\
test1.txt
test2.txt
test3.txt
testfolder
test_folder1.txt
test_folder2.txt
folder

generalnie to nie jest to zlecenie a raczejprzysługa z której bardzo chciałbym się wywiązać.

No doba, więc w $_GET['path'] masz np. test/testfolder i przekazujesz to do ścieżki readdir
Gość
a więc po wielu wielu próbach udało mi się osiągnąc zamierzony cel smile.gif dziekuje wam za pomoc

możecie mi tylko jeszcze powiwedzieć w jaki sposób moge wyświetlić zawartość danego pliku nie patrzac czy to jest txt jpg czytez pdf questionmark.gif

chciał w jakiś sposób zmienić
  1. echo '<a href="index.php?katalog='.$sciezka.$katalog.'">'.$katalog.'</a><br>';

wzbogacajac go zdarzenie onclick='nazwa_funkcji()' ale sypie mi bledami.

pozdrawiam
Turson
Cytat
możecie mi tylko jeszcze powiwedzieć w jaki sposób moge wyświetlić zawartość danego pliku nie patrzac czy to jest txt jpg czytez pdf questionmark.gif

Stwórz po prostu bezpośredni link do pliku
Gość
no tak ale w tym przypadku jest tak że on chce każdy plik tak samo jak folderotwierać a następnie wertować readdirem
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.