Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сложное дерево папок
 
 автор: FiX   (24.04.2007 в 14:15)   письмо автору
 
 

Как отобразить дерево папок в такой последовательности:
1) Сначала выводятся папки корневой директории
2) Если в папке есть подпапки, слева ставится значок +
2) Выбираешь, например, папку со значком +, кликаешь на ней, она открывается уже под выбранной нами папкой). Как в проводнике Windows, одним словом.
Используя функцию, могу вывести список ВСЕХ папок в виде дерева. Но как вывести их поочередно?

   
 
 автор: FiX   (25.04.2007 в 13:53)   письмо автору
 
   для: FiX   (24.04.2007 в 14:15)
 

Неужели никто не делал подобных проектов? Хотя бы подскажите, пожалуйста, каким образом можно это осуществить.

   
 
 автор: ZuArt   (25.04.2007 в 14:35)   письмо автору
 
   для: FiX   (25.04.2007 в 13:53)
 

Если речь идет о появлении без перезагрузки страницы, то вариантов тока два:
- грузить все дерево с учетом дочерних конструкций, которые помещать в отдельные слои и через JS их показывать/скрывать при нажатии на "+"
- копать в сторону AJAX

   
 
 автор: neudor   (25.04.2007 в 16:06)   письмо автору
 
   для: FiX   (24.04.2007 в 14:15)
 

Держи.
Быстро перебрал один старый скрипт. При клике на элемент меню оно выпадает. Всякие плюсики и др. приделаешь сам.

<head>
<script>
    function clickHandler() {
        var targetId, srcElement, targetElement;
        srcElement = window.event.srcElement;
        if (srcElement.className == 'menu_expand' || srcElement.className == 'menuvoid') {
            targetId = srcElement.id + 'dtls';
            targetElement = document.all(targetId);
            if (targetElement.style.display == 'none') {
                targetElement.style.display = '';
            } else {
                targetElement.style.display = 'none';
            }
        }
    }
    document.onclick = clickHandler;
</script>
</head>
<body>
<?php
function menu_output($tree$parent="menu"$level=1) {
    
$counter=1;
    
$depth=""; for($i=1$i<$level$i++) $depth.="--";

    foreach(
$tree as $value=>$state) {
        
$prefix $parent."_".$counter;        
        if( 
is_array($state) ) { //this is a dir
            
echo "<div id=$prefix class=menu_expand title='Выпадающее меню'>$depth $value</div>\n";
            echo 
"<div id=".$prefix."dtls style='display:none' align=left>\n";
            
menu_output($state$prefix$level+1);
            echo 
"</div></td></tr>\n";
        } else { 
//this is a file
            
echo "$depth $value</a><br>\n";
        }
        
$counter++;
    }
}
$tree = array('dir1'=>array('file1'=>'file''file2'=>'file'), 'dir2'=>array('dir2.1'=>array('file2.1'=>'file''file2.2'=>'file'), 'file1'=>'file''file2'=>'file'), 'file1'=>'file');

echo 
"<pre>"print_r($tree); echo "</pre>";
menu_output($tree);
?>
</body>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования