[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа и управление с файлами
TMake
Добрый день еще раз всем.
Делаю на подобие проводника т.е. должно отображаться файлы и папки при нажатие на папку должно загружаться содержимое этой папки. В корне все работает переход на 2 уровень работает, а на третьем он папки распознает как файлы как от этого избавиться


PHP
<?
if(isset(
$_GET['d'])){
$d=$_GET['d'];

}
$dt=$_SERVER['DOCUMENT_ROOT'].'/'.$d;


$do opendir($dt);
while (
$file readdir($do)) :
if(
is_dir($file)){
if(
$file=='.' OR $file=='..'):
else:
print 
"<a href='cms_profi.php?d=$file/'><b>".$file."</b></a><br>";
endif;
}
else{
print 
"<a href='cms_profi.php?f=$file&d=$d'>$file</a> <br>"
}
endwhile;
closedir($do);




Спустя 4 часа, 3 минуты, 42 секунды (22.02.2009 - 20:04) kirik написал(а):
stepan, во-первых, у тебя составляется не верный путь до папки тут:
PHP
$dt=$_SERVER['DOCUMENT_ROOT'].'/'.$d;

$_SERVER['DOCUMENT_ROOT'] уже имеет на конце закрывающий слэш, по этому он тебе не нужен.

Во-вторых этим:
PHP
is_dir($file)

ты проверяешь наличие файла/папки в текущей дериктории (в дериктории работы скрипта), а так как файлы "второго уровня" лежат в папке отличной от корневой, он их не считает за папки потому что их не существует. Нужно указывать полный путь:
PHP
is_dir($dt.'/'.$file)

Спустя 21 минута, 22 секунды (22.02.2009 - 20:26) kirik написал(а):
Погляди, может интересно будет:

PHP
<?php
$root_dir 
dirname(__FILE__); // корневая папка работы скрипта
$path = isset($_GET['path']) ? str_replace('../''/'$_GET['path']) : '/'// текущий путь

foreach(glob($root_dir.'/'.$path.'*') as $item// Сканим текущую папку
{
    if(
is_dir($item))
        
$dirs[] = basename($item).'/'// если дериктория, пишим в переменную для дерикторий
    
else
        
$files[] = basename($item); // если файл, то для файлов
}

if(!empty(
$path) && $path != '/'// определяем, показывать-ли кнопку "на уровень выше"
{
    
$path_dirs explode('/'trim($path'/'));
    
array_pop($path_dirs);
    echo 
'<a href="?path='.implode('/'$path_dirs).'/">../</a><br />';
}

for(
$i 0$c count($dirs); $i $c$i++) // выводим все папки текущей дериктории
{
    echo 
'<a href="?path='.$path.$dirs[$i].'"><b>'.$dirs[$i].'</b></a><br />';
}

for(
$i 0$c count($files); $i $c$i++) // выводим все файлы.
{
    echo 
'<a href="?path='.$path.$files[$i].'">'.$files[$i].'</a><br />';
}

Спустя 1 час, 9 минут, 51 секунда (22.02.2009 - 21:35) stepan написал(а):
kirik Спасибо тебе огроменное!!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.