Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Otwieranie podkatalogow
grzehotnik
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 8.01.2009

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


Witam
Chcem zrobić skrypy, ktory czyta, co znajduje się w katalogu w podanej lokalizacji i jesli jest to plik wyświetla jego nazwę a jeśli jest to katalog jest tworzony do niego link po kliknięciu na ktorego można przegladac jego zawartość, i jesli w nim jest kolejny katalog to sytuacja się powtarza.
Zrobiłem coś takiego

Kod
$katalog = opendir($sciezka);

while ($plik = readdir($katalog))
{
if (($plik<>".")&&($plik<>".."))&& if(!is_dir($plik))
{
echo "<li>.$plik.</li>";
}
else
if (is_dir($plik))


I nie wiem jak to zrobić dalej.
Myśle, że potrzeban będzie rekurencja. Jeśli ktoś wie jak to zrobić to proszę o pomoc.

Sprobowalem tak

Kod
<?php

function wyswietl($kat)
{


$katalog = opendir($kat);

while ($plik = readdir($katalog))
{
if(!is_dir($plik))
   {
   echo "<li>.$plik.</li>";
   }

else
   {
   $newpath=basename($plik);
   wyswietl($newpath);
   }


}
closedir($katalog);
}

$sciezka='./wyslane/';
wyswietl($sciezka);

?>


ale pokazuje mi blad ze strona nie moze byc wyswietlona:
Błąd 2 (net::ERR_FAILED): Nieznany błąd
Prosze o pomoc

Ten post edytował grzehotnik 30.01.2009, 21:43:44
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
em1X
post
Post #2





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Sprawdź najpierw w manualu co zwraca funkcja basename" title="Zobacz w manualu PHP" target="_manual, potem zastanów się co podawane jest do funkcji oraz co powinno być podane w rzeczywistości.
Go to the top of the page
+Quote Post
grzehotnik
post
Post #3





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 8.01.2009

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


Ok mój błąd.
Zmieniłem kod ale nadal jest coś nie tak.
Prosze o pomoc

Kod
<?php

function wyswietl($sciezka_kat)
{
$katalog = opendir($sciezka_kat);

while ($plik = readdir($katalog))
{
if(!is_dir($plik))
   {
   echo "<li>.$plik.</li>";
   }

else

   wyswietl($plik);

}
closedir($katalog);

}
$sciezka='../wyslane/';
wyswietl($sciezka);

?>


Cały czas ten sam błąd.
Go to the top of the page
+Quote Post
em1X
post
Post #4





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


  1. <?php
  2. function wyswietl($sciezka_kat)
  3. {
  4.    foreach (glob($sciezka_kat . '/*') as $file)
  5.    {
  6.        if (!is_dir($file))
  7.        {
  8.            $file = basename($file);
  9.            
  10.            print '<li>' . $file . '</li>';
  11.        }
  12.        else
  13.        {
  14.            wyswietl($file);
  15.        }
  16.    }
  17. }
  18.  
  19. wyswietl('.');
  20. ?>
Go to the top of the page
+Quote Post
grzehotnik
post
Post #5





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 8.01.2009

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


Wielkie dzięki za to.

Niestety ten skrypt wyświetla wszystkie pliki (tylko) z folderów i podfolderów,
a ja potrzebuje żeby wyświetlał to co znajduje się w folderze, tzn. jeśli są tam pliki i foldery
to je wyświetla i dopiero po kliknięciu na interesujący mnie podfolder skrypt go otwiera i znowu pokazuje w nim pliki i folderi i tak w kółko.

Ale jeszcze raz dzięki
Go to the top of the page
+Quote Post
kubal
post
Post #6





Grupa: Zarejestrowani
Postów: 47
Pomógł: 1
Dołączył: 17.06.2008
Skąd: się bierze ten lubieżny uśmiech na Twojej twarzy?

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


chodzi Ci o coś takiego?
  1. <?php
  2.  
  3. /* Konfiguracja */
  4. $showsize = 1; /* Pokazać rozmiar pliku, 1 tak, 0 nie. */
  5.  
  6. /* Pliki graficzne
  7. Syntax: $display['filetype'] = "picture"; */
  8. $display['php'] = "php.gif";
  9. $display['html'] = "html.gif";
  10. $display['htm'] = "html.gif";
  11. $display['shtml'] = "html.gif";
  12.  
  13. /* Podłączanie
  14. Syntax: $excludedir[] = "directory"; */
  15. $excludedir[] = "temp";
  16. $excludedir[] = "tmp";
  17.  
  18. /* Wybór pliku głównego */
  19. $excludefile[] = "index.php";
  20.  
  21. ?>
  22.  
  23. <html>
  24. <head>
  25. <title>Mapa strony</title>
  26. </head>
  27.  
  28. <body>
  29.  
  30. <b>Mapa strony</b><p>
  31.  
  32. <?php
  33.  
  34. $stime = gettimeofday();
  35.  
  36. $root = getcwd();
  37.  
  38. $pre = explode("/", $_SERVER['REQUEST_URI']);
  39. array_pop($pre);
  40. $prefix = join("/", $pre);
  41.  
  42.  
  43. //$root = str_replace($prefix, "", $root);
  44. //$prefix = "";
  45.  
  46. $root .= "/";
  47.  
  48. echo "<table cellspacing=0 cellpadding=0 border=0>\n";
  49. echo "<tr><td><img align=absmiddle src=server.gif> http://".$_SERVER['SERVER_NAME'];
  50. echo "$prefix/";
  51. echo "</td></tr><tr><td><img align=absmiddle src=vertical.gif></td></tr>\n";
  52.  
  53. function get_extension($name) {
  54.    $array = explode(".", $name);
  55.    $retval = strtolower(array_pop($array));
  56.    return $retval;
  57. }
  58.  
  59. function list_dir($chdir) {
  60.        global $root, $prefix, $showsize, $display, $excludedir, $excludefile;
  61.    unset($sdirs);
  62.    unset($sfiles);
  63.    chdir($chdir);
  64.    $self = basename($_SERVER['PHP_SELF']);
  65.  
  66.    $handle = opendir('.');
  67.    
  68.    while ($file = readdir($handle))
  69.    {
  70.        if(is_dir($file) && $file != "." && $file != ".." && !in_array($file, $excludedir))
  71.        { $sdirs[] = $file; }
  72.        elseif(is_file($file) && $file != "$self" && array_key_exists(get_extension($file), $display)
  73.            && !in_array($file, $excludefile))
  74.        { $sfiles[] = $file; }
  75.    }
  76.          
  77.  
  78.    $dir = getcwd();
  79.    $dir1 = str_replace($root, "", $dir."/");
  80.    $count = substr_count($dir1, "/") + substr_count($dir1, "\");
  81.                
  82.    if(is_array($sdirs)) {
  83.        sort($sdirs);
  84.        reset($sdirs);
  85.            
  86.        for($y=0; $y<sizeof($sdirs); $y++) {
  87.            echo "<tr><td>";
  88.            for($z=1; $z<=$count; $z++)
  89.              { echo "<img align=absmiddle src=vertical.gif>&nbsp;&nbsp;&nbsp;"; }
  90.            if(is_array($sfiles))
  91.            { echo "<img align=absmiddle src=verhor.gif>"; }
  92.            else
  93.            { echo "<img align=absmiddle src=verhor1.gif>"; }
  94.            echo "<img align=absmiddle src=folder.gif> <a
  95.                href=&#092;"http://".$_SERVER['SERVER_NAME']."$prefix/$dir1$sdirs[$y]\">$sdirs[$y]</a>";
  96.            list_dir($dir."/".$sdirs[$y]);
  97.        }
  98.    }
  99.                  
  100.    chdir($chdir);
  101.          
  102.    if(is_array($sfiles)) {
  103.        sort($sfiles);
  104.        reset($sfiles);
  105.                
  106.        $sizeof = sizeof($sfiles);
  107.            
  108.        for($y=0; $y<$sizeof; $y++) {
  109.            echo "<tr><td>";
  110.            for($z=1; $z<=$count; $z++)
  111.            { echo "<img align=absmiddle src=vertical.gif>&nbsp;&nbsp;&nbsp;"; }
  112.            if($y == ($sizeof -1))
  113.            { echo "<img align=absmiddle src=verhor1.gif>"; }
  114.            else
  115.            { echo "<img align=absmiddle src=verhor.gif>"; }
  116.            echo "<img align=absmiddle src=\"";
  117.            echo $display[get_extension($sfiles[$y])];
  118.            echo "\"> ";
  119.            echo "<a href=\"http://".$_SERVER['SERVER_NAME']."$prefix/$dir1$sfiles[$y]\">$sfiles[$y]</a>";
  120.            if($showsize) {
  121.                $fsize = @filesize($sfiles[$y])/1024;
  122.                printf(" (%.2f kB)", $fsize);
  123.            }
  124.            echo "</td></tr>";
  125.  
  126.            echo "<tr><td>";
  127.            
  128.        }
  129.        echo "<tr><td>";
  130.        for($z=1; $z<=$count; $z++)
  131.        { echo "<img align=absmiddle src=vertical.gif>&nbsp;&nbsp;&nbsp;"; }
  132.        echo "</td></tr>\n";
  133.    }
  134. }
  135.  
  136. list_dir($root);
  137.  
  138. echo "</table>\n";
  139.  
  140. $ftime = gettimeofday();
  141. $time = round(($ftime[sec] + $ftime[usec] / 1000000) - ($stime[sec] + $stime[usec] / 1000000), 5);
  142. echo "<center>Ta mapa została wygenerowana w $time sekund.</center>\n";
  143. ?>
  144.  
  145. </body>
  146. </html>

i tu jeszcze obrazki: (IMG:http://img156.imageshack.us/img156/161/folderhd7.gif) (IMG:http://img165.imageshack.us/img165/6536/htmlhe3.gif) (IMG:http://img228.imageshack.us/img228/9720/phpsr5.gif) (IMG:http://img156.imageshack.us/img156/708/serverij6.gif) (IMG:http://img156.imageshack.us/img156/3874/verhores0.gif) (IMG:http://img165.imageshack.us/img165/9940/verhor1rr9.gif) (IMG:http://img165.imageshack.us/img165/656/verticaljq1.gif)
Go to the top of the page
+Quote Post
em1X
post
Post #7





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Cytat(grzehotnik @ 31.01.2009, 23:11:28 ) *
Niestety ten skrypt wyświetla wszystkie pliki (tylko) z folderów i podfolderów,
a ja potrzebuje żeby wyświetlał to co znajduje się w folderze, tzn. jeśli są tam pliki i foldery
to je wyświetla i dopiero po kliknięciu na interesujący mnie podfolder skrypt go otwiera i znowu pokazuje w nim pliki i folderi i tak w kółko.


Twój skrypt z pierwszego postu, gdyby działał, robiłby to samo co mój. Podałem rozwiązanie problemu, nie zamierzałem robić Ci gotowca. Przerobienie go, żeby działał jak sobie życzysz to kwestia dodania dosłownie linijki kodu.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 17:18