Peuplarchie Posted June 23, 2008 Share Posted June 23, 2008 Good day to you all, The following code read recursively a directory and return the content in a html list. What I need to do is when the class "fly" is use the </li> tag should be after the the next level, like follow : MY WAY <ul class="sub"> <li><a href="http://test.com/test_images.php" class="fly">Gatineau - Ottawa</a></li> <ul> <li><a href="http://test.com/test_images.php" class="">Aylmer</a></li> <li><a href="http://test.com/test_images.php" class="">Gatineau Park - Parc de la Gatineau</a></li> <li><a href="http://test.com/test_images.php" class="">Misc. - Divers</a></li> <li><a href="http://test.com//test_images.php" class="">Nat. Capital of Canada - Capital Nat. du Canada</a></li> </ul> <li><a href="http://test.com/test_images.php" class="fly">Gatineau - Ottawa</a></li> <ul> <li><a href="http://test.com/test_images.php" class="">Aylmer</a></li> <li><a href="http://test.com/test_images.php" class="">Gatineau Park - Parc de la Gatineau</a></li> <li><a href="http://test.com/test_images.php" class="">Misc. - Divers</a></li> <li><a href="http://test.com//test_images.php" class="">Nat. Capital of Canada - Capital Nat. du Canada</a></li> </ul> </ul> THE GOOD WAY <li><a href="#nogo11" class="fly">Zoom</a> <ul> <li><a href="#nogo12">35mm to 125mm</a></li> <li><a href="#nogo13">50mm to 250mm</a></li> <li><a href="#nogo14">125mm to 500mm</a></li> </ul> </li> Now here is my code : echo "<ul class=\"sub\">\r"; function dirlist($dir) { $ul = true; $dh = opendir($dir); $isLeaf = true; while (false !== ($file = readdir($dh))) { if ($file == '.' || $file == '..') { $subs = true; continue; } $filed = $file; $file = $dir . '/' . $file; $aHasDirs = array(); $aHasDirs = glob(realpath($file) . '/*', GLOB_ONLYDIR); if (count($aHasDirs) > 0) { $class = 'fly'; $ul = true; } else { $class = ''; $ul = false; } if (is_dir($file)) { $isLeaf = false; echo ' <li><a href="http://test.com/test_images.php?folder=' . $file . '" class="' . $class . '">' . $filed . '</a></li>'; echo "\n"; if (!$isLeaf && $ul) { echo " <ul>\n"; } dirlist($file); if (!$isLeaf && $ul) { echo " </ul>\n"; } } } } dirlist ("Pictures/Pics/Pic-S", false); echo "</ul>"; Thanks and take care ! Link to comment https://forums.phpfreaks.com/topic/111419-generating-an-html-list/ Share on other sites More sharing options...
Peuplarchie Posted June 23, 2008 Author Share Posted June 23, 2008 Resolved thamks ! function dirlist($dir, $startDepth = 0) { static $depth; $spaceMulti = 4; $depth = empty($depth) ? $startDepth : $depth; $dh = opendir($dir); $isLeaf = false; $depth++; while (false !== ($file = @readdir($dh))) { if ($file == '.' || $file == '..') { continue; } $dirPath = $dir . '/' . $file; $aHasDirs = array(); $aHasDirs = glob(realpath($dir . '/' . $file) . '/*', GLOB_ONLYDIR); if (count($aHasDirs) > 0) { $class = 'fly'; $isLeaf = false; } else { $class = ''; $isLeaf = true; } if (is_dir($dirPath)) { echo "\n" . str_repeat(' ', $spaceMulti * $depth) . '<li><a href="http://test.comtest_images.php?folder=' . $dirPath . '" class="' . $class . '">' . $file . '</a>'; if (!$isLeaf) { $depth++; echo "\n" . str_repeat(' ', $spaceMulti * $depth) . "<ul>"; dirlist($dirPath); echo "\n" . str_repeat(' ', $spaceMulti * $depth) . "</ul>\r"; $depth--; echo "\n" . str_repeat(' ', $spaceMulti * $depth) . "</li>\r"; } else { echo "</li>\r"; dirlist($dirPath); } } } fclose($dh); $depth--; } dirlist ("Pictures/Category/Pic-S", 0); [\php] Link to comment https://forums.phpfreaks.com/topic/111419-generating-an-html-list/#findComment-571982 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.