Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Menu e DataBase

  1. #1

    Menu e DataBase

    Dovrei organizzare una Tabella del DB per realizzare un Menu con 4 voci di sottolivello tipo

    Voce di primo livello con sottomenu
    - voce di secondo livello con sottomenu
    ---- voce di terzo livello con sottomenu
    -------- voce di quarto livello con sottomenu

    Vorrei fare tutto in 1 tabella e come potrei organizzare questa tabella?

    il MAX di livelli è 4

  2. #2
    con questa struttura non hai limiti:

    id (contatore)
    id_p (num, id padre categoria)
    voce (txt voce di menù)

    es.

    1, 0, "forum"
    2, 1, "linguaggi di programmazione e database"
    3, 2, "asp"
    4, 3, "menu e database"

    5, 0, "php"
    ....
    "Link2me.it: Professional network e Marketplace"
    www.link2me.it

  3. #3
    centoiso

    Me la spieghi un poketto? :rollo:

  4. #4
    Ho fatto quella tabella e ora sto provando a pescare le voci, ho fatto una cosa del genere...

    <%
    Dim IDMenu
    set Menu = Server.CreateObject("ADODB.Recordset")
    sql = "select * from Menu where ID_Padre = 0"
    Menu.ActiveConnection = cn
    Menu.Open sql, cn
    %>
    <%
    Do while not Menu.EOF
    IDMenu = Menu("IDMenu")
    %>
    <%=Menu("voce")%>

    <%
    set Menu = Server.CreateObject("ADODB.Recordset")
    sql = "select * from Menu where ID_Padre =" & IDMenu
    Menu.ActiveConnection = cn
    Menu.Open sql, cn
    %>
    <%Do while not Menu.EOF%>
    -------------------------<%=Menu("voce")%>
    <%
    Menu.movenext
    loop
    %>

    Ma così ovviamente mi dice che:

    Il record corrente corrisponde all'inizio o alla fine del file


    come faccio un annidamento di cicli per la stessa tabella del DB?

  5. #5
    Per spiegarmi meglio ...io ho creato questa tabella

    IDMenu ID_padre Voce

    1 0 VOCE1
    2 1 sottomenu
    3 1 sottomenu
    4 1 sottomenu


    come si fa un ciclo di questo tipo...dove stampo la voce con ID PADRE zero (che vuol dire è un menu di primo livello) e poi i sottolivello

  6. #6
    Ciao, devi usare una funzione ricorsiva, cerca su questo forum se non la trovi ti mando un esempio
    "Link2me.it: Professional network e Marketplace"
    www.link2me.it

  7. #7
    Si l'ho trovata ma non ci capisco nulla :P

    meglio se mi passi un esempio e grazie mille

  8. #8
    ok, con questa funzione generi una lista puntata con tutte i nodi:

    codice:
    'creo la funzione per listare le categorie
    	Function elencafigli(id_p_cat)
    		
    		Dim rs
    		set rs = cn.execute("select * from categorie where id_p_cat = "&id_p_cat&" order by categoria")
    		response.Write("<ul>")
    		while not rs.eof
    			response.Write("[*]")
    			if id_p_cat = 0 then response.Write("<font color='#FF0000'>") end if
    			response.Write(""&rs("categoria")&"
    ")
    			if id_p_cat = 0 then response.Write("</font>") end if
    			response.Write("")
    			parametro = rs("id_categoria")
    			elencafigli(parametro)
    		rs.moveNext
    		wend
    		response.Write("[/list]")
    		rs.close
    		set rs = nothing
    		
    	End Function
    	
    	
    	'inizio il cliclo attribuendo il valore zero 
    	id_p_cat = 0
    	'chiamo la funzione
    	elencafigli(id_p_cat)
    "Link2me.it: Professional network e Marketplace"
    www.link2me.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.