www.webdeveloper.com
Results 1 to 4 of 4

Thread: [RESOLVED] ASP to output Nav menu with submenus from SQL

  1. #1
    Join Date
    Dec 2008
    Posts
    488

    resolved [RESOLVED] ASP to output Nav menu with submenus from SQL

    Hi,

    I have an augmented SQL output of:

    Code:
    id   url           text        title                  current    parent
    -----------------------------------------------------------------------
    0    /             Home        CSM Welcome Screen     true       0
    1    /calls        Calls       Customer Call Input    false      1
    2    /cases        Cases       Case Management        false      2
    3    /rgas         RGAs        RGA Management         false      3
    4    /reports      Reports     CSM Reporting          false      4
    5    /admin        Admin       Administration Area    false      5
    6    /calls/new    New Call    New Call Sheet         false      1
    7    /calls/edit   Edit Call   Edit Call Sheet        false      1
    I need to use VBScript to format this data and use it to output a Nav menu on my web page template. I have some simple script to do this from a multidimensional array, but it doesn't include the **sub-menu**.

    How do I take this output from the SQL query and format it to HTML? Notice the column "current". This is a variable which is part of a statement that uses the current page id to determine whether or not a link goes to the current page. So this isn't actually pulled from SQL, but calculated during output.

    So, assuming the current page id="0" (home), I need the above SQL data to be formatted into the following HTML:
    HTML Code:
    <ul>
        <li><a class="current" href="/" title="CSM Welcome Screen">Home</a></li>
        <li><a href="/calls" title="Customer Call Input">Calls</a></li>
        <li><a href="/Cases" title="Case Management">Cases</a>
            <ul class="nav-submenu">
                <li><a href="/calls/new">New Call</a></li>
                <li><a href="/calls/edit">Edit Call</a></li>
            </ul>
        </li>
        <li><a href="/rgas" title="RGA Management">RGAs</a></li>
        <li><a href="/reports" title="CSM Reporting">Reports</a></li>
        <li><a href="/admin" title="Administration Area">Admin</a></li>
    </ul>
    I could probably do this 100 ways from Sunday in PHP, but I'm totally lost in VBScript ASP. Here's what I was doing when I was just using a simple array in the config file and didn't have a sub navmenu (but now I want to use SQL):

    PHP Code:
    <&#37;
    DIM company_namepage_titleheader_nav_links(5)

    company_name "My Company"
    page_title "Customer Management System"

    header_nav_links(0) = Array(0"/""Home""CSM Welcome Screen"True0)
    header_nav_links(1) = Array(1"/calls""Calls""Customer Call Input"False1)
    header_nav_links(2) = Array(2"/cases""Cases""Case Management"False2)
    header_nav_links(3) = Array(3"/rgas""RGAs""RGA Management"False3)
    header_nav_links(4) = Array(4"/reports""Reports""CSM Reporting"False4)
    header_nav_links(5) = Array(5"/admin""Admin""Administration Area"False5)

    %>
    <
    ul>
    <%
    For 
    Each i in header_nav_links
    Response
    .write("    <li><a ")
    If 
    i(3) = 1 Then
        Response
    .write("class=""current"" ")
    End If
    Response.write("href=""" i(0) & """ title = """ i(2) & """>" i(1) & "</a>")
    '#### code for sub-nave menu will go here ####
    Response.write("</li>" & vbCr)
    Next
    %>
    </ul> 
    I'm not so much looking for someone to program this for me, as for someone to guide me in the right direction on this for loop... I don't even know how to create a function in VBScript yet... haha Thanks!
    Last edited by jamesbcox1980; 11-05-2010 at 04:04 PM.

  2. #2
    Join Date
    Jan 2008
    Location
    Florida
    Posts
    1,227
    How do you expect your data "New Call" and "Edit Call" to be displayed as a submenu under "Cases"?? There is absolutely nothing about your data structure that ties those two subs to the "Cases" parent. If their Parent IDs were 2 instead of 1 it would make sense.

  3. #3
    Join Date
    Dec 2008
    Posts
    488
    Excuse me that was a mistype in the HTML, they were suppose to go under "calls". Thanks for catching that.

  4. #4
    Join Date
    Dec 2008
    Posts
    488
    Ok, so I figured this out after working it out in PHP first. Doing this in PHP was much easier, and I had to cheapen it to do it in VBScript with my limited knowlege. What I had to do was create a function that had an SQL query that returned the parent links, and then during the While loop to output them, I made another SQL query to check for child links for each parent.

    Code:
    Function DisplayMenu(sMenu_id, iCurrPage, sSpacing)
        Dim oMainLinks, oSubLinks, sLinksMenu
        Set oMainLinks = SelectDB("SELECT ('<a href=""' + href + '"" title=""' + title + '""' + ' class=""nobr' + (CASE WHEN link_id = " & iCurrPage & " THEN ' current' ELSE '' END) + '"">' + link_text + '</a>') AS links_items, link_id FROM links WHERE parent_id = 0 AND menu_id = " & sMenu_id & " ORDER BY sort_order")
    
        sLinksMenu = ""
        If Not oMainLinks.EOF Then
            sLinksMenu = sLinksMenu & sSpacing & "<ul>" & vbCrlf
    
            While Not oMainLinks.EOF
                sLinksMenu = sLinksMenu & sSpacing & "    <li>" & oMainLinks("links_items")
                Set oSubLinks = SelectDB("SELECT ('<li><a href=""' + href + '"" title=""' + title + '"" class=""nobr"">' + link_text + '</a></li>') AS links_items, parent_id FROM links WHERE parent_id = " & oMainLinks("link_id") & " AND menu_id = " & menu_id & " ORDER BY sort_order")
        
                If Not oSubLinks.EOF Then
                    sLinksMenu = sLinksMenu & vbCrlf & sSpacing & "        <ul class=""nav-submenu"">" & vbCrlf
                    While Not oSubLinks.EOF
                        sLinksMenu = sLinksMenu & sSpacing & "            " & oSubLinks("links_items") & vbCrlf
                        oSubLinks.MoveNext
                    WEnd
                    sLinksMenu = sLinksMenu & sSpacing & "        </ul>" & vbCrlf & sSpacing & "    "
                End IF
                sLinksMenu = sLinksMenu &  "</li>" & vbCrlf 
                Set oSubLinks = Nothing
                oMainLinks.MoveNext
            WEnd
            sLinksMenu = sLinksMenu & sSpacing & "</ul>" & vbCrlf
        End If
        DisplayMenu = sLinksMenu
    End Function

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center

"

"

X vBulletin 4.2.2 Debug Information

  • Page Generation 0.34477 seconds
  • Memory Usage 2,898KB
  • Queries Executed 15 (?)
More Information
Template Usage (35):
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (2)bbcode_code
  • (1)bbcode_html
  • (1)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (4)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (4)postbit
  • (4)postbit_onlinestatus
  • (4)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (73):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates