я заменил два while рекурсией с указанием уровня вложенности. В Вашем примере было два уровня. "display:none" убрал. Остальное переписано с Вашего примера. Оно?
PHP код:
<?php
$start_dir="orders/2012";
$max_level = 2; // максимальная глубина вложенности
printDir($start_dir, $max_level);
function printDir($dir, $max_level, $level = 1) {
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
echo '<div onClick="shiftSubDiv('.$level.')"><span><img width=20px src="../images/pictures/orders1.jpg" />'.basename($dir).'</span></div>';
echo '<div id="subDiv'.$level.'"><ul>';
while (($file = readdir($dh)) !== false) {
if(is_dir($dir."/".$file)) {
if ($file != "." && $file != "..") {
if ($level <= $max_level) {
// печатаем вложенные файлы
printDir($dir."/".$file, $max_level, ++$level);
}else {
// печатаем только имя папки
$img_file = "orders1.jpg";
}
} else {
// игнорируем текущую папку и ссылку на верхний уровень
$img_file = "";
}
} else {
$img_file = selectFileIcon($file);
}
if (strlen($img_file) > 0) {
echo '<li><img width=20px src="../images/pictures/'.$img_file.'" /><a href="'.$dir.'/'.$file.'">'.$file.'</a></li>';
}
}
closedir($dh);
echo '</ul></div>';
}
}
}
function selectFileIcon($file_name) {
$icon = "";
$ext = strtolower(substr($file_name, -4));
switch ($ext) {
case ".pdf":
case ".txt":
case ".jpg":
$icon = "orders_".substr($ext,-3).".jpg";
break;
default:
$icon = "";
}
return $icon;
}
?>
Социальные закладки