Jump to content

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]

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.