Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    menu a struttura ad albero (ricorsivo)

    salve,
    con questo script riesco a stampare a video correttamente il mio menu ed i suoi rispettivi sotto menu tipo:
    Codice PHP:
    menu 1
         sotto menu 1
             vode del sotto menu 1
    menu 2
         sotto menu 2
             voce del sotto menu 2 
    allego script:
    Codice PHP:
       sql="select count(*) as totali from menu"
       
    Set rs conn.Execute(sql)
          
    ReDim arr(rs("totali"),4)
          
    sql "select* from menu order by nome_menu "
       
    rs.close
       Set rs 
    conn.Execute(sql)
       Do While 
    rs.eof false
          arr
    (co,0)=rs("id"' id del menu
          arr(co,1)=rs("nome_menu") '
    descrizione della voce menu
          arr
    (co,2)=rs("tipo_menu"' tipo di menu M=menu principale SM=sotto menu V=voce
          arr(co,3)=rs("id_padre") '
    riferimento all' id del padre
          arr(co,4)=rs("http") '
    collegamento da utilizzare nel tag a
          co
    =co+1
          rs
    .Movenext
       loop
       rs
    .close
       set rs
    =Nothing
       call Stampafigli 
    ("999",0'999 è id del menu principale


    Sub Stampafigli ( idpadre, livello)
    dim rip
    dim z
    dim spazio
       for z= 1 to livello
          spazio=spazio&""
       next
       for rip = 0 to ubound (arr,1)
          if cint ( arr(rip,3) ) = cint (idpadre) then
             response.write "
    " & spazio & arr (rip,1)
             call Stampafigli ( cint(arr(rip,0)) ,livello+1)
          end if
       next
    End Sub 
    ora io vorrei, al posto di inserire gli spazi, formattarlo con il tag div come esempio sottostamnte
    Codice PHP:
       [url="<%=arr(rip,4)%>"]<%=arr(rip,1)%>[/url]
       <
    div class="section">
          [
    url="<%=arr(rip,4)%>"]<%=arr(rip,1)%>[/url]
          <
    class="item2 arrow"="<%=arr(rip,4)%>"><%=arr(rip,1)%></a>
          <
    div class="section">
             [
    url="="]"><%=arr(rip,1)%>[/url]
             [url="
    ="]"><%=arr(rip,1)%>[/url]
             [
    url="="]"><%=arr(rip,1)%>[/url]
          </div>
          [url="
    ="]"><%=arr(rip,1)%>[/url]
          <
    div class="section">
             [
    url="="]"><%=arr(rip,1)%>[/url]
          </div>
       </div>
       [url="
    javascript:void(0)"]<%=arr(rip,1)%>[/url]
       <div class="
    section">
          [url="
    ="]"><%=arr(rip,1)%>[/url]
          [
    url="="]"><%=arr(rip,1)%>[/url]
          [url="
    ="]"><%=arr(rip,1)%>[/url]
       </
    div>
       [
    url="="]"><%=arr(rip,1)%>[/url]
       <div class="
    section">
          [url="
    ="]"><%=arr(rip,1)%>[/url]
          [
    url="="]"><%=arr(rip,1)%>[/url]
          <div class="
    section">
             [url="
    ="]"><%=arr(rip,1)%>[/url]
             [
    url="="]"><%=arr(rip,1)%>[/url]
             [url="
    ="]"><%=arr(rip,1)%>[/url]
             [
    url="="]"><%=arr(rip,1)%>[/url]
             [url="
    ="]"><%=arr(rip,1)%>[/url]
             [
    url="="]"><%=arr(rip,1)%>[/url]
             [url="
    <%=arr(rip,4)%>"]<%=arr(rip,1)%>[/url]
          </div>
          [url="
    example2.html"]Listing[/url]
       </div> 
    peò non riesco a crearmi la routine che mi crei il codice sopra.
    in pratica riesco ad aprire i tag ma nn riesco a capire quando chiuderli.
    Grazie Marco
    Carpe diem
    Preferisco tentare che rinunziare

  2. #2
    Per il menu sarebbe meglio usare le liste

    codice:
    <ul>[*]descrizione[/list]
    
    
    
    
    <ul>[*]
    menu 1
        <ul>[*]
         sotto menu 1
             <ul>[*]voce 1 del sotto menu 1[*]voce 2 del sotto menu 1 [/list]
          <ul>
        
    [*]
    menu 2
        <ul>[*]
         sotto menu 2
             <ul>[*]
             voce del sotto menu 2[/list]
          <ul>
        
    [/list]
    Prova a fare queste modifiche
    codice:
    Sub Stampafigli ( idpadre, livello)
    dim rip
    dim z
    dim spazio
       response.write("<ul>")
       for rip = 0 to ubound (arr,1)
          if cint ( arr(rip,3) ) = cint (idpadre) then
             response.write "[*]"& arr (rip,1) & ""
             call Stampafigli ( cint(arr(rip,0)) ,livello+1)
          end if
       next
       response.write("[/list]")
    End Sub
    ciao

  3. #3
    ti ringrazio per la veloce risposta ma ho bisogno di formattare il documento come indicato sopra in quanto ho uno script javascript che mi crea un menu.
    Ormai sono nel pallone nn ho idea di che prove fare
    AIUTATEMIIIIII
    grazie
    Marco
    Carpe diem
    Preferisco tentare che rinunziare

  4. #4
    Prova a mettere div al posto di ul e li e vedi cosa ti esce.

  5. #5
    non funziona in quanto la sequenza deve essere:
    apro e non chiudo fino a quando non ho inserito tutti i sottomenu e le varie voci
    Codice PHP:
       [COLOR=limegreen]<div class="section"> [/COLOR]
          [
    url="<%=arr(rip,4)%>"]<%=arr(rip,1)%>[/url
          <
    class="item2 arrow"="<%=arr(rip,4)%>"><%=arr(rip,1)%></a
          <
    div class="section"
             [
    url="="]"><%=arr(rip,1)%>[/url] 
             [url="
    ="]"><%=arr(rip,1)%>[/url
             [
    url="="]"><%=arr(rip,1)%>[/url] 
          </div> 
          [url="
    ="]"><%=arr(rip,1)%>[/url
          <
    div class="section"
             [
    url="="]"><%=arr(rip,1)%>[/url] 
          [COLOR=limegreen]</div> [/COLOR]
       [COLOR=limegreen]</div> [/COLOR] 
    come vedi le voci in verde chiaro indicano il problema che ti esponevo
    Carpe diem
    Preferisco tentare che rinunziare

  6. #6
    Prova a vedere se questo funziona
    devi richiamarla cosi

    codice:
    strMenu=""
    call menuAlbero(0,strMenu,0)
    'valori da passare
    'idPadre identificativo del menu padre della voce principale
    'byref strMenu -- stringa dove verrà inserito il menu
    'indice -- ?? mi sembra che non serve a niente lascia zero
    response.write(strMenu)

    codice:
    function menuAlbero(idPadre,byref strMenu,indice)
    		
    	
    	dim RsFigli,Rs1
    	set Rs1=Server.CreateObject ("ADODB.recordset")
    	set RsFigli=Server.CreateObject ("ADODB.recordset")
    		
    		
    	'esecuzione della query
    	sSQL="select* from menu "
    	sSQL=sSQL & " AND id_Padre=" & idPadre
    	sSQL=sSQL & " order by nome_menu"		
    	'Response.Write sSQL
    	Rs1.Open sSQL,objConn,3,3
    	
    
    	if not Rs1.EOF then
    		'ciclo sui risultati trovati
    			
    		do while not Rs1.EOF 
    			idMenu=Rs1.Fields ("id")
    			descrizione=Rs1.Fields ("nome_menu")
    			link=Rs1.Fields ("http")
    			
    			'Controllo se il menu ha dei figli
    			sSQL="select count(*) as NumFigli from menu  where id_Padre=" & idMenu & " and visualizza=1" 
    			RsFigli.Open sSQL,objConn,3,3
    			NumFigli=RsFigli.Fields ("NumFigli")
    			RsFigli.Close
    				
    			if NumFigli>0 then
    				'se sono presenti dei figli creo un link di tipo folder
    				strMenu=strMenu & (indice*2) & "<div class=""folder"">"
    					
    			else
    				'Non sono presenti dei figli
    				if InStr (1,UCase(descrizione),"HELP")>0 then
    					'Se il link si riferisce all'help creo un link di tipo 
    					'help. Viene visualizzata l'icona Help
    					strMenu=strMenu & (indice*2) & "<div class=""help"">"
    				else
    					'Se il link si riferisce ad un servizio creo un link di tipo 
    					'servizio. Viene visualizzata l'icona foglietto
    					strMenu=strMenu & (indice*2) & "<div class=""doc"">"
    				end if
    			end if
    				
    			'Gestione del link
    			if IsNull(link) or link="" then
    				descrizione=trim(descrizione)
    				strMenu=strMenu & "" & descrizione & "
    "
    			else
    				link=trim(link)
    				descrizione=trim(descrizione)
    				if URL=link then 
    					strMenu=strMenu & "" & descrizione & "
    "
    				else
    					strMenu=strMenu & "" & descrizione & "
    "
    				end if
    			end if
    			if NumFigli>0 then
    				'Se esistono dei figli richiamo la funzione sul menu figlio
    				call menuAlbero(idMenu,strMenu,1)			
    			end if
    			strMenu=strMenu & "</div>"
    			Rs1.MoveNext 
    		loop
    
    
    	end if
    
    	Rs1.Close
    	set Rs1=nothing
    	set RsFigli=nothing
    
    end function

  7. #7
    allora
    nn riesco proprio a formattare come da esempio del primo post.
    allego tabella mdb "menu" per effettuare le stesse prove
    Codice PHP:
    100;"support";"M";999;
    101;"Partners";"M";999;
    102;"Customers";"M";999;
    103;"About Us";"M";999;
    104;"Product One";"V";98;
    105;"Product Two";"SM";98;
    106;"Product Three";"SM";98;
    107;"Product Four";"SM";98;
    109;"Overview";"V";105;
    110;"Features";"V";105;
    111;"Requirements";"V";105;
    112;"Flash Demos";"V";105;
    113;"Overview";"V";106;
    114;"Features";"V";106;
    115;"Requirements";"V";106;
    116;"Screenshots";"V";106;
    117;"Flash Demos";"V";106;
    118;"Live Demo";"SM";106;
    119;"Create Account";"V";118;
    120;"Test Drive";"SM";118;
    121;"Test One";"V";120;
    122;"Test Two";"V";120;
    123;"Test Three";"V";120;
    124;"Overview";"V";107;
    125;"Features";"V";107;
    126;"Requirements";"V";107;
    108;"Product Five";"V";98;
    98;"productds";"M";999;
    99;"downloads";"M";999
    ovviamente va importato con i campi id(contatore) nome_menu(testo) tipo_menu(testo) id_padre(numerico)
    Carpe diem
    Preferisco tentare che rinunziare

  8. #8
    Ma il menu risultante che ti serve è questo?

    codice:
    About Us
    
    Customers
    
    downloads
    
    Partners
    
    <div class="section">
    productds
    
    
    Product Five
    
    <div class="section">
    Product Four
    
    
    Features
    
    Overview
    
    Requirements
    
    </div>
    Product One
    
    <div class="section">
    
    Product Three
    
    
    Features
    
    Flash Demos
    
    <div class="section">
    Live Demo
    
    
    Create Account
    
    <div class="section">
    Test Drive
    
    
    Test One
    
    Test Three
    
    Test Two
    
    </div>
    </div>
    Overview
    
    Requirements
    
    Screenshots
    
    </div>
    <div class="section">
    Product Two
    
    
    Features
    
    Flash Demos
    
    Overview
    
    Requirements
    
    </div>
    </div>
    support

    ciao

  9. #9
    no purtroppo.
    come scritto nel primo post dovrebbe essere formattato così:
    Codice PHP:
    [url="<%=arr(rip,4)%>"]<%=arr(rip,1)%>[/url
       <
    div class="section"
          [
    url="<%=arr(rip,4)%>"]<%=arr(rip,1)%>[/url
          <
    class="item2 arrow"="<%=arr(rip,4)%>"><%=arr(rip,1)%></a
          <
    div class="section"
             [
    url="="]"><%=arr(rip,1)%>[/url] 
             [url="
    ="]"><%=arr(rip,1)%>[/url
             [
    url="="]"><%=arr(rip,1)%>[/url] 
          </div> 
          [url="
    ="]"><%=arr(rip,1)%>[/url
          <
    div class="section"
             [
    url="="]"><%=arr(rip,1)%>[/url] 
          </div> 
       </div> 
       [url="
    javascript:void(0)"]<%=arr(rip,1)%>[/url] 
       <div class="
    section"> 
          [url="
    ="]"><%=arr(rip,1)%>[/url
          [
    url="="]"><%=arr(rip,1)%>[/url] 
          [url="
    ="]"><%=arr(rip,1)%>[/url
       </
    div
       [
    url="="]"><%=arr(rip,1)%>[/url] 
       <div class="
    section"> 
          [url="
    ="]"><%=arr(rip,1)%>[/url
          [
    url="="]"><%=arr(rip,1)%>[/url] 
          <div class="
    section"> 
             [url="
    ="]"><%=arr(rip,1)%>[/url
             [
    url="="]"><%=arr(rip,1)%>[/url] 
             [url="
    ="]"><%=arr(rip,1)%>[/url
             [
    url="="]"><%=arr(rip,1)%>[/url] 
             [url="
    ="]"><%=arr(rip,1)%>[/url
             [
    url="="]"><%=arr(rip,1)%>[/url] 
             [url="
    <%=arr(rip,4)%>"]<%=arr(rip,1)%>[/url] 
          </div> 
          [url="
    example2.html"]Listing[/url] 
       </div> 
    con il menu formattato da te non si ritrovano piu in corrispondenza i sottomenu e le varie voci.

    Tra i mille tentativi ho trovato una mezza soluzione che non mi convince molto.
    Codice PHP:
        sql="select count(*) as totali from menu"
        
    Set rs conn.Execute(sql)
            
    ReDim arr(rs("totali"),4)
            
    sql "select* from menu order by nome_menu "
            
    rs.close
            Set rs 
    conn.Execute(sql)
                Do While 
    rs.eof false
                    arr
    (co,0)=rs("id")
                    
    arr(co,1)=rs("nome_menu")
                    
    arr(co,2)=rs("tipo_menu")
                    
    arr(co,3)=rs("id_padre")
                    
    arr(co,4)=rs("http")
                    
    co=co+1
                    rs
    .Movenext
                loop
            rs
    .close
            set rs
    =Nothing
        call Stampafigli 
    ("999",0,"","")


    Sub Stampafigli idpadrelivello,miolivello,miomenu)

    dim rip
    dim z
    dim spazio

       
    for rip 0 to ubound (arr,1)
          if 
    cint arr(rip,3) ) = cint (idpadrethen
                
    if miolivello livello or miolivello="" then miolivello=livello
                
    if livello miolivello then
                    
    for 1 to miolivello-livello
                
    %>
                </
    div>
                <%
                    
    next
                    miolivello
    =livello
                end 
    if
                if 
    miomenu="M" and arr(rip,2)="M" then
                
    %>
                </
    div>
                <%

                
    end if
                if 
    miomenu="" then miomenu=arr(rip,2)


                if 
    arr(rip,2)="SM" or arr(rip,2)="M" then
                    
    %>
                    [
    url="<%=arr(rip,4)%>"]<%=arr(rip,1)%><% if arr(rip,4) = "javascript:void(0)" then %>[img]include/menu/arrow.gif[/img]<% end if %>[/url]
                    <
    div class="section">
                    <%
                elseif 
    arr(rip,2)="V" then
                    
    %>
                    [
    url="<%=arr(rip,4)%>"]<%=arr(rip,1)%>[/url]
                    <%
                
    end if
                 
    call Stampafigli cint(arr(rip,0)) ,livello+1,miolivello,miomenu)
          
    end if
       
    next
                
    if livello miolivello then
                    
    for 1 to miolivello-livello
                
    %>
                </
    div>
                <%
                    
    next
                    miolivello
    =livello
                end 
    if
    End Sub 
    è veramente incasinato ma nn so che pesci prendere
    Carpe diem
    Preferisco tentare che rinunziare

  10. #10
    I menu si fanno con gli elenchi puntati (o numerati).
    E' poi demandato ai fogli di stile (CSS) formattarli nella maniera opportuna.
    E' anche un ottimo sistema per avere un codice client accessibile.
    Se l'utente disabilita i CSS quanto meno vede una struttura annidata di voci grazie ai vari elenchi, appunto, annidati.
    Il mio è un consiglio, non che la "regola" usata da chi sviluppa siti web di un certo livello.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.