Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Otwieranie podkatalogow
Forum PHP.pl > Forum > PHP
grzehotnik
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
em1X
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.
grzehotnik
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.
em1X
  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. ?>
grzehotnik
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
kubal
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:
em1X
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.
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.