Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: вывести все файлы и папки
Форумы портала PHP.SU » » Работа с файловой системой и файлами » вывести все файлы и папки

Страниц (1): [1]
 

1. xhugo - 30 Сентября, 2011 - 07:24:53 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. function dirr($dir){
  3.   if (is_dir($dir)) {
  4.      if ($dh = opendir($dir)) {
  5.          while (($file = readdir($dh)) !== false) {
  6.              print "Файл: $file : тип: " . filetype($dir . $file) . "<br>";
  7.              if(filetype($dir.$file)=='dir'){
  8.                dirr($dir.$file);
  9.              }
  10.          }
  11.          closedir($dh);
  12.      }
  13.   }
  14. }
  15.  

выводит папки и файлы в указанной директории норм, но когда заходит в папку которая находится в той директории, то там уже не указывает тип файлов..
в чем проблема?
2. DeepVarvar - 30 Сентября, 2011 - 09:49:46 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. function treeList($path = "") {
  4.   $prefix = ($path == "") ? $_SERVER['DOCUMENT_ROOT'] : "";
  5.   $return = preg_replace("#(.*)/(.*)$#u","\$1",$path);
  6.   echo ' <ul> ';
  7.   echo ' <li><a href="?path='.$return.'">[...назад...]</a></li> ';
  8.   foreach (glob($_SERVER['DOCUMENT_ROOT']."$path/*") as $item) {
  9.     $isdir = (is_dir($item)) ? true : false;
  10.     $item = str_replace(array($_SERVER['DOCUMENT_ROOT'],"//"),array("","/"),$item);
  11.     if ($isdir) echo ' <li><b><a href="?path='.$item.'">'.$item.'</a></b></li> ';
  12.     else echo ' <li>'.$item.'</li> ';
  13.     }
  14.   echo ' </ul> ';
  15.   }
  16.  
  17. $path = (isset($_GET['path'])) ? $_GET['path'] : "";
  18. header("Content-Type: text/html; charset=utf-8");
  19. treeList($path);
  20.  
  21. ?>

(Добавление)
Набросок можно доделать для вывода информации о файле.
У вас же ошибки в путях.
3. OrmaJever - 30 Сентября, 2011 - 11:30:51 - перейти к сообщению
вот писал для себя, вроде попроще чем у DeepVarvar Закатив глазки
PHP:
скопировать код в буфер обмена
  1. function scan($dir)
  2. {
  3.         $d = array();
  4.         $arr = opendir($dir);
  5.  
  6.         while($v = readdir($arr))
  7.         {
  8.                 if($v == '.' or $v == '..') continue;
  9.                 if(!is_dir($v)) $d[] = $v;
  10.                 if(is_dir($v) === true) $d[$v] = scan($dir.DIRECTORY_SEPARATOR.$v);
  11.    }
  12.  
  13.         return $d;
  14. }
4. xhugo - 30 Сентября, 2011 - 13:02:33 - перейти к сообщению
OrmaJever, как же здесь определить что нашел он директорию?
т.к. нужно примерно так разложить:

основ.директория
-файл
-файл
-директория
--файл
--файл
--директория
---файл
---файл
-файл
5. OrmaJever - 30 Сентября, 2011 - 13:30:31 - перейти к сообщению
ой немного ошибся
PHP:
скопировать код в буфер обмена
  1. function scan($dir)
  2. {
  3.         $d = array();
  4.         $arr = opendir($dir);
  5.  
  6.         while($v = readdir($arr))
  7.         {
  8.                 if($v == '.' or $v == '..') continue;
  9.                 if(!is_dir($dir.DIRECTORY_SEPARATOR.$v)) $d[] = $v;
  10.                 if(is_dir($dir.DIRECTORY_SEPARATOR.$v)) $d[$v] = scan($dir.DIRECTORY_SEPARATOR.$v);
  11.    }
  12.  
  13.         return $d;
  14. }

так должно быть. и структра масива будет такая
CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.     [0] => .htaccess
  3.     [1] => arena.php
  4.     [images] => Array
  5.         (
  6.             [0] => icons
  7.             [icons] => Array
  8.                 (
  9.                     [0] => arrow.png
  10.                     [1] => clothes.png
  11.                     [2] => dot-snow.png
  12.                     [3] => duel.png
  13.                     [4] => energy.png
  14.                     [5] => forum_new.png
  15.                     [6] => letter.png
  16.                     [7] => life.png
  17.                     [8] => shield.png
  18.                 )
  19.  
  20.         )
  21.  
  22.     [2] => includes
  23.     [includes] => Array
  24.         (
  25.             [class] => Array
  26.                 (
  27.                     [0] => mysql.class.php
  28.                     [1] => user.class.php
  29.                 )
  30.  
  31.             [0] => config.php
  32.             [1] => function.php
  33.             [2] => init.php
  34.         )
  35.  
  36.     [3] => index.php
  37.     [4] => install.php
  38.     [5] => install.sql
  39.     [6] => login.php
  40.     [7] => register.php
  41.     [8] => style.css
  42.     [9] => territories.php
  43.     [10] => user.php
  44. )

 

Powered by ExBB FM 1.0 RC1