Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyświetlanie zawartości katalogu i nie tylko
--Grzegorz_S--
post 12.03.2014, 13:19:51
Post #1





Goście







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
Powód edycji: [Kshyhoo]: bb-code
Go to the top of the page
+Quote Post
freemp3
post 12.03.2014, 13:24:40
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Powinieneś dodać do linków parametry $_GET, w których przekażesz nazwę aktualnie otwartego katalogu lub / oraz nazwy pliku.


--------------------
Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.

https://www.aroch.pl
https://themeforest.net/user/aroch
https://www.astroblog.aroch.pl
https://www.4geeks.pl
Go to the top of the page
+Quote Post
-Gość-
post 12.03.2014, 14:11:00
Post #3





Goście







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
Go to the top of the page
+Quote Post
Turson
post 12.03.2014, 14:15:40
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


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

Ten post edytował Turson 12.03.2014, 14:16:02
Go to the top of the page
+Quote Post
-Gość-
post 12.03.2014, 14:51:30
Post #5





Goście







szczerze mówiąc nie mogę ogarnąc tych GET-ów
Go to the top of the page
+Quote Post
markuz
post 12.03.2014, 14:58:20
Post #6





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


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 to the top of the page
+Quote Post
-Gość-
post 12.03.2014, 19:19:31
Post #7





Goście







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 to the top of the page
+Quote Post
-Gość-
post 13.03.2014, 10:48:15
Post #8





Goście







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
Powód edycji: [Kshyhoo]: bb-code
Go to the top of the page
+Quote Post
markuz
post 13.03.2014, 11:22:48
Post #9





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


  1. $sciezka = isset($_GET['katalog']) ? '/'.$_GET['katalog'] : "/test";


Ten post edytował markuz 13.03.2014, 11:25:08


--------------------
Go to the top of the page
+Quote Post
-Gość-
post 13.03.2014, 14:47:29
Post #10





Goście







ta zmiana nie wniosla nic nowego nadal nie chce mi wyswietlic zawartosci folderu i twierdzi że folder nie jest folderem.
Go to the top of the page
+Quote Post
markuz
post 13.03.2014, 15:02:19
Post #11





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


#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 to the top of the page
+Quote Post
-Gość-
post 13.03.2014, 18:04:57
Post #12





Goście







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
Go to the top of the page
+Quote Post
markuz
post 13.03.2014, 18:28:19
Post #13





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


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

Ten post edytował markuz 13.03.2014, 20:41:10


--------------------
Go to the top of the page
+Quote Post
-Gość-
post 13.03.2014, 19:09:26
Post #14





Goście







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ć.
Go to the top of the page
+Quote Post
Turson
post 13.03.2014, 19:39:28
Post #15





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


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 to the top of the page
+Quote Post
-Gość-
post 13.03.2014, 21:05:39
Post #16





Goście







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
Powód edycji: [Kshyhoo]: bb-code po raz 3
Go to the top of the page
+Quote Post
Turson
post 13.03.2014, 21:26:02
Post #17





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


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 to the top of the page
+Quote Post
-Gość-
post 13.03.2014, 21:37:06
Post #18





Goście







no tak ale w tym przypadku jest tak że on chce każdy plik tak samo jak folderotwierać a następnie wertować readdirem
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 30.04.2025 - 08:56