TalkPHP

TalkPHP (http://www.talkphp.com/forums.php)
-   General (http://www.talkphp.com/general/)
-   -   How do I make a tree view from MySQL and PHP (http://www.talkphp.com/general/3749-how-do-i-make-tree-view-mysql-php.html)

oscargodson 12-10-2008 06:29 AM

How do I make a tree view from MySQL and PHP
 
I have an application in the making that needs to show a treeview of files and directories.

I have it all working based on an <ul>. Each <li> is a sub file .

I have a table set up with:
name, parent, type, user, content, project, date, id

I set up the DB to set the parent as the id of it's parent (e.g. Directory "A" has an id of "2" and parent of "0" and directory "B" has an id of "20" and a parent of "2". B would be nested inside of A because it's parent matches it's id).

Here is a sample of what I want the markup to be like:

HTML Code:

<ul>
        <li class="folder">
                The Project Name
                <ul>
                        <li class="folder">
                                css
                                <ul>
                                        <li class="file">style.css</li>
                                        <li class="file">thickbox.js</li>
                                </ul>
                        </li>
                        <li class="folder">
                                includes
                                <ul>
                                        <li class="folder">
                                                functions
                                                <ul>
                                                        <li class="file">math.php</li>
                                                        <li class="file">mysql_connect.php</li>
                                                </ul>
                                        </li>
                                        <li class="file">header.php</li>
                                        <li class="file">sidebar.php</li>
                                        <li class="file">footer.php</li>
                                </ul>
                        </li>
                </ul>
        </li>
</ul>

I can not figure this out. Does anyone know how to sort recursively like this?!

Tanax 12-10-2008 10:03 AM

What do you currently have?

oscargodson 12-10-2008 10:49 AM

I actually got it thanks to a guy over at tizag.com. He wrote me a small function that worked right out of the box. Just in case anyone else needs to make a site tree of some sort using a ul (could be an ol of course):

PHP Code:


function tree_view($index)
{
    
$q=mysql_query("SELECT * FROM table_name WHERE parent=$index");
    if(!
mysql_num_rows($q))
        return;
    echo 
'<ul>';
    while(
$arr=mysql_fetch_assoc($q))
    {
        echo 
'<li>';
        echo 
$arr['name'];//you can add another output there
        
tree_view($arr['id']);
        echo 
'</li>';
    }
    echo 
'</ul>';


then simply call it with:
PHP Code:

tree_set(0); 

Worked like a charm!

Tanax 12-10-2008 02:22 PM

Looks good, could be improoved, but I guess it works ^^
Though, I think you made a typo: tree_set(0) should be tree_view(0)


All times are GMT. The time now is 08:37 PM.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0