Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it L'avatar di Adam7
    Registrato dal
    Mar 2006
    Messaggi
    82

    Menu con funzione ricorsiva

    Ciao!
    Vorrei creare un menu con funzione ricorsiva per la mia directory, ho cercato qui sul forum ma non ho trovato nulla per il mio caso

    Nella tabella dove sono elencate le categorie ci sono 3 colonne id, catid, categoria con 0 richiamo la categoria principale

    Id | catid | Categoria
    --------------------------------
    1 0 Ambiente
    2 1 Animali
    3 2 Cani

    facciamo finta che sono nella categoria cani il menu deve ricostruire il percorso a ritroso es. home: Ambiente >> Animali >> Cani

    purtroppo dalle mie ricerche qui sul forum e su alcuni mdr non ho ottenuto molte informazioni.. qualcuno di voi può spiegarmi o magari indicarmi qualche articolo deve posso prendere spunto?
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Si fa così.
    È da parecchio che non uso ricorsioni, non sono sicuro al 100% che funzioni, ma a logica dovremmo esserci. Se hai domande, chiedi pure.

    codice:
    Function MenuCategorie(ByVal lngId)
        myrs.Filter = "id=" & lngId
        If myrs("catid") <> 0 Then
          MenuCategorie = MenuCategorie(myrs("catid")) & " > " & myrs("Categoria")
        End If
    End Function
    
    
    ' Crea e apri il recordset
    Set myrs = server.CreateObject("ADODB.Recordset")
    myrs.CursorType = 3
    strSource = "SELECT * FROM TabellaCategorie"
    myrs.Open strSource, cnnConnessione
    
    ' Crea il menu
    strMenu = MenuCategorie(id)
    
    ' chiusura e distruzione recordset
    myrs.Close
    Set myrs = Nothing
    
    ' Visualizza il menu
    Response.Write strMenu

  3. #3
    Utente di HTML.it L'avatar di Adam7
    Registrato dal
    Mar 2006
    Messaggi
    82
    Ciao longline,
    Grazie per avermi risposto…
    Ho provato lo script che hai postato ma mi da questo errore:

    ADODB.Recordset error '800a0bb9'
    Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
    /menus.asp, line 10
    alla riga 10 c’è questa istruzione: myrs.Filter="id="& lngId
    io no n so risolvere questo errore :master: ho cercato la funzione filter su internet x capirci un po' di più ma niente... posto il codice qui sotto


    <%
    Function MenuCategorie(ByVal lngId)
    myrs.Filter="id="& lngId
    If myrs("catid") <> 0 Then
    MenuCategorie = MenuCategorie(myrs("catid")) & " > " & myrs("Categoria")
    End If
    End Function


    ' Crea e apri il recordset

    sql = "SELECT * FROM tcategoria"
    Set myrs= Server.CreateObject("ADODB.Recordset")
    myrs.Open sql, conn, 3, 3

    ' Crea il menu
    strMenu = MenuCategorie(id)

    ' chiusura e distruzione recordset
    myrs.Close
    Set myrs = Nothing

    ' Visualizza il menu
    Response.Write strMenu
    %>
    ps. Bellissima la tua ultima fatica!

  4. #4
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Prova così:

    codice:
    <%
    Function MenuCategorie(ByVal lngId)
    myrs.Filter="id="& lngId
    If myrs("catid") <> 0 Then
    MenuCategorie = MenuCategorie(myrs("catid")) & " > " & myrs("Categoria")
    End If
    End Function
    
    
    ' Crea e apri il recordset
    
    sql = "SELECT * FROM tcategoria"
    Set myrs= Server.CreateObject("ADODB.Recordset")
    myrs.CursorType = 3
    myrs.Open strSource, cnnConnessione
    
    ' Crea il menu
    strMenu = MenuCategorie(id)
    
    ' chiusura e distruzione recordset
    myrs.Close
    Set myrs = Nothing
    
    ' Visualizza il menu
    Response.Write strMenu
    %>
    Grazie per i complimenti

  5. #5
    Utente di HTML.it L'avatar di Adam7
    Registrato dal
    Mar 2006
    Messaggi
    82
    solito errore ma questa volta alla riga 25 cioè myrs.Open strSource, cnnConnessione

  6. #6
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Scusa, prova così:

    codice:
    <%
    Function MenuCategorie(ByVal lngId)
    myrs.Filter="id="& lngId
    If myrs("catid") <> 0 Then
    MenuCategorie = MenuCategorie(myrs("catid")) & " > " & myrs("Categoria")
    End If
    End Function
    
    
    ' Crea e apri il recordset
    
    sql = "SELECT * FROM tcategoria"
    Set myrs= Server.CreateObject("ADODB.Recordset")
    myrs.Open sql, conn, 3, 1
    
    ' Crea il menu
    strMenu = MenuCategorie(id)
    
    ' chiusura e distruzione recordset
    myrs.Close
    Set myrs = Nothing
    
    ' Visualizza il menu
    Response.Write strMenu
    %>

  7. #7
    Utente di HTML.it L'avatar di Adam7
    Registrato dal
    Mar 2006
    Messaggi
    82
    Allora… ho sostituito come mi hai consigliato ma ricevevo cmq l’errore '800a0bb9' a questa riga myrs.Filter="id="& lngId
    poi ho provato a sostituire lngId con id e ora visualizzo quest’errore:
    Microsoft VBScript runtime error '800a0007'
    Out of memory: 'Rs.Filter'
    /menus.asp, line 16
    :master:

  8. #8
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Scusa ma a questa riga

    ' Crea il menu
    strMenu = MenuCategorie(id)

    devi mettere un id valido, ad esempio:

    strMenu = MenuCategorie(2)

  9. #9
    Utente di HTML.it L'avatar di Adam7
    Registrato dal
    Mar 2006
    Messaggi
    82
    sempre uguale errore alla riga 16 Microsoft VBScript runtime error '800a0007'
    longline ti ringrazio x l'aiuto ma non è che ti sto facendo perdere tempo?

  10. #10
    Originariamente inviato da longline
    Si fa così.
    È da parecchio che non uso ricorsioni, non sono sicuro al 100% che funzioni, ma a logica dovremmo esserci. Se hai domande, chiedi pure.

    codice:
    Function MenuCategorie(ByVal lngId)
        myrs.Filter = "id=" & lngId
        If myrs("catid") <> 0 Then
          MenuCategorie = MenuCategorie(myrs("catid")) & " > " & myrs("Categoria")
        End If
    End Function
    
    
    ' Crea e apri il recordset
    Set myrs = server.CreateObject("ADODB.Recordset")
    myrs.CursorType = 3
    strSource = "SELECT * FROM TabellaCategorie"
    myrs.Open strSource, cnnConnessione
    
    ' Crea il menu
    strMenu = MenuCategorie(id)
    
    ' chiusura e distruzione recordset
    myrs.Close
    Set myrs = Nothing
    
    ' Visualizza il menu
    Response.Write strMenu
    Si può fare qualcosa di analogo con php?
    Grazie

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.