Re: [PHP] Recursive Directory Listing



Joe Schaeffer schreef:
Well, that makes things much easier (and that should teach me to rely
on a 5-year-old O'Reilly book...)! Thanks for the help!

I'm able to display all the contents of the correct dirs and subdirs,
but I'm struggling with my implementation. Since I'm trying to nest
unordered lists, I can't seem to 'catch' sub-directories to nest it
within their parent <li> tags (and then close the corresponding <ul>
when necessary. Before I spend time trying to figure out how to chain
the iterators or mine the returned arrays, is it fair to ask if this
approach is even possible?

sure, RecursiveIteratorIterator or DirectoryTreeIterator both have
a getDepth() method which might come in useful.

alternatively you could subclass either and define the beginChildren() and
endChildren() methods to output the open/close <UL> tags.

have a hunt around here: http://www.php.net/~helly/php/ext/spl/


Again, thanks for the point in the right direction!



On Thu, Oct 30, 2008 at 1:30 PM, Jochem Maas <jochem@xxxxxxxxxxxxx> wrote:
Joe Schaeffer schreef:
New to PHP development, new to the list; searched the archives but
didn't find an answer (or at least nothing i could successfully
adapt).

I have a (readable) directory structure like so:

../navigation
/cats
/dogs
/beagles
/collies
/some/other/dirs/
/horses

I need to display those directories in nested html lists (marked up
with css). Using PHP on the above, I'd like to produce the following
HTML:

<ul>
<li>cats</li>
<li>dogs
<ul>
<li><beagles></li>
<li><collies>
<ul><li>some...</li></ul>
</li>
</ul>
</li>
<li>horses</li>
</ul>

I'm able to display one level deep (cats, dogs, horses), but not nest
the lists accordingly. Since this is for a navigation structure,
obviously I'll have anchors in the <li></li> lines. They'll be
formatted like so
href="index.php?section=dogs&chapter=collies&verse=some .

Some details about my environment:
1) no files will be in the /navigation (or sub) dirs, but i'd
(ideally) like to define a depth, to prevent >3-4 levels of
navigation.
2) I can successfully exclude dirs (. and .. and anything else I define)
3) the actual PHP script probably won't be in the /navigation
directory, so I'll need a defined starting path (ie, $root =
/site/docs/includes/navigation/ or somesuch...).
4) no database access (otherwise this whole contraption wouldn't be an issue...)

Any help is greatly appreciated, thank you in advance.
RecurisiveDirectoryIterator and FilterIterator classes from SPL is something that will get you home.
the archives and the intertubes offer examples (etc) on how to use these.

--joe




.



Relevant Pages

  • Re: [PHP] Recursive Directory Listing
    ... I'm able to display all the contents of the correct dirs and subdirs, ... I need to display those directories in nested html lists (marked up ... Using PHP on the above, I'd like to produce the following ...
    (php.general)
  • Re: [PHP] Recursive Directory Listing
    ... I'm able to display all the contents of the correct dirs and subdirs, ... Since I'm trying to nest ... I need to display those directories in nested html lists (marked up ...
    (php.general)
  • Re: [PHP] Recursive Directory Listing
    ... I'm able to display all the contents of the correct dirs and subdirs, ... I need to display those directories in nested html lists (marked up ... Outside of this loop, create your tags. ...
    (php.general)
  • Re: SoA Vs OO
    ... > Say the task is to have a list of things that can display on a screen. ... > quite far up in the hierarchy. ... It's difficult to replace code that uses lists ... >> Remember also we're talking implementation inheritance here, ...
    (comp.object)
  • Re: SoA Vs OO
    ... > Say the task is to have a list of things that can display on a screen. ... > quite far up in the hierarchy. ... It's difficult to replace code that uses lists ... >> Remember also we're talking implementation inheritance here, ...
    (comp.programming)