Jump to content

Generating an html list


Peuplarchie

Recommended Posts

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

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]

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.