php recursive list help

Posted by Jason on Stack Overflow See other posts from Stack Overflow or by Jason
Published on 2010-05-25T01:04:12Z Indexed on 2010/05/25 1:11 UTC
Read the original article Hit count: 419

Filed under:
|

Hi all,

I am trying to display a recursive list in PHP for a site I am working on.

I am really having trouble trying to get the second level to display. I have a function that displays the contents to the page as follows.

   function get_menu_entries($content,$which=0)
{
    global $tbl_prefix, $sys_explorer_vars, $sys_config_vars;

    // INIT LIBRARIES
    $db = new DB_Tpl();
    $curr_time = time();
    $db->query("SELECT * FROM ".$tbl_prefix."sys_explorer WHERE preid = '".$which."' && config_id = '".$sys_explorer_vars['config_id']."' && blocked = '0' && startdate < '".$curr_time."' && (enddate > '".$curr_time."' || enddate = '') ORDER BY preid,sorting");

    while($db->next_record()){
        $indent = $db->f("level") * 10 - 10;

        $sitemap_vars['break'] = "";
        $sitemap_vars['bold'] = "";

        if($db->f("level") == 2) {
            $sitemap_vars['ul_start'] = "";
            $sitemap_vars['bold'] = "class='bold'";
            $sitemap_vars['ul_end'] = "";
        }

        switch($db->f("link_type"))
        {
            case '1': // External Url
                $sitemap_vars['hyperlink'] = $db->f("link_url");
                $sitemap_vars['target'] = "";
                if($db->f("link_target") != "") {
                    $sitemap_vars['target'] = "target=\"".$db->f("link_target")."\"";
                }
            break;

            case '2': // Shortcut
                $sitemap_vars['hyperlink'] = create_url($db->f("link_eid"),$db->f("name"),$sys_config_vars['mod_rewrite']);
                $sitemap_vars['target'] = "";
            break;

            default:
                $sitemap_vars['hyperlink'] = create_url($db->f("eid"),$db->f("name"),$sys_config_vars['mod_rewrite']);
                $sitemap_vars['target'] = "";
            break;
        }

        if($db->f("level") > 1) {
            $content .= "<div style=\"text-indent: ".$indent."px;\" ".$sitemap_vars['bold']."><a href=\"".$sitemap_vars['hyperlink']."\" ".$sitemap_vars['target'].">".$db->f("name")."</a></div>\n";
        }

        $content = get_menu_entries($content,$db->f("eid"));
    }
    return(''.$content.'');
}

At the moment the content displays properly, however I want to turn this function into a DHTML dropdown menu. At present what happens with the level 2 elements is that using CSS the contents are indented using CSS. What I need to happen is to place the UL tag at the beginning and /UL tag at the end of the level 2 elements.

I hope this makes sense. Any help would be greatly appreciated.

© Stack Overflow or respective owner

Related posts about php

Related posts about recursion