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

    [ASP3.0]Creare una mappa dinamica di un sito con struttura ad albero

    Ciao tutti
    ho sviluppato un piccolo CMS che mi permette di creare una struttura informativa ad albero (numero di nodi infiniti). I nodi dell'albero possono essere cartelle (F) o schede (P)

    la tabella che contiene le info sui nodi è così strutturata:
    `Object_id` int(10)---------------------- identificativo dell'oggetto
    `ParentContext_id` int(10)--------------- identificativo dell'oggetto padre
    `Object_type` char(1),------------------- tipo di oggetto (cartella o scheda:F/P)
    `Name_ita` varchar(100),----------------- nome dell'oggetto

    Ora devo riuscire a costruire, in un unica pagina (mappa.asp) una serie di <ul>[*] nidificati... in modo che venga rappresentata la gerarchia della struttura informativa per tutta la profondità dell'albero.
    Tutto questo deve essere fatto senza l'ausilio di codice JS ma bensì in puro HTML.


    Ringrazio tutto coloro che potranno darmi Imput in merito.

  2. #2
    oddio c'era una discussione a riguardo in cui ti faceva vedere come usare un recordset+filter per fare questo lavoro... :master: non mi ricordo se era di argomento "menu ricorsivo" o altro

    cmq fai una ricerca (usa anche la parola filter)


  3. #3
    Ciao santino

    credo che tu ti riferissi a questo

    Questo script funziona nel segunete modo:
    dato un ID di un oggetto risale l'albero stampando a video lil percorso gerarchico a cui appartiene.
    L'ho provato e funziona correttamente, ma a me serve una cosa molto diffferente.

    Io devo stampare a video tutto l'albero gerachico delle informazioni.

    esempio:
    [News](ParentContext_id=0, Object_id=1, Object_type=F)
    --> gastronomia (ParentContext_id=1, Object_id=2, Object_type=F)
    ----- °ricetta 1 (ParentContext_id=2, Object_id=3, Object_typ=P)
    -----° riceta 2 (ParentContext_id=2, Object_id=4, Object_typ=P)
    -----° ricetta n (ParentContext_id=2, Object_id=5, Object_typ=P)
    --> eventi
    -----° sagra dell'anguilla
    ----- ° sfilata d'amore moda
    ----- °festa n
    --> Sport
    ----> tennis
    ----------°torneo 1
    ----------°..torneo n
    ---->Calcio
    ----------° tornao 1
    ----------° torneo n

  4. #4
    se mi fai una copia in access della tabella del database e me la mandi per posta all'indirizzo email mio (uguale al contact di msn) ci dò un'occhiata...

  5. #5
    Ciao Santino,

    ti ho spedito una mail con allegato il Db contenente la tabella in questione.

    Grazie

    PS:
    E speriamo che sta sera si vinca in champions così siamo tutti e 2 più contenti.
    Curcuff non gioca problemi alla schiena mannaggia!!!

  6. #6
    c'è un mini mini mini file di configurazione

    per il discorso "link_page", ho immaginato che ogni voce fosse linkata ad una pagina del tipo "tua_pagina.asp?id=" quindi poi, quando vado a costruire la stringa html, attacco semplicemente l'id dell'elemento alla variabile link_page...se così non dovesse andare modifica la function "stampa"

    codice:
    '****************************************
    '***CONFIGURAZIONE
    
    dim margin_left						'/indent
    margin_left=20						'in px
    
    dim link_page						'/pagina a cui punta
    link_page="?id="					'il link
    
    dim link_class						'/class dei
    link_class=""						'link
    
    dim dbPath							'/path del
    dbPath=server.MapPath("cms.mdb")	'db
    
    '***FINE CONFIGURAZIONE
    '****************************************
    
    
    
    set conn=server.CreateObject("adodb.connection")
    conn.open "provider=microsoft.jet.oledb.4.0;" & "data source=" & dbPath
    
    set rs=conn.execute("select * from objbase")
    
    set base=server.CreateObject("scripting.dictionary")
    
    while not rs.eof
    	stringa="&|&" & rs(1) &"&|&" & rs(2)& "&|&" & rs(3) & "&|&"
    	idchiave=clng(rs(0))
    	base.add idchiave,stringa
    rs.movenext
    wend
    
    set rs=nothing
    
    sub stampa_menu(parent_id,livello)
    
    dim tbase
    
    set tbase=server.CreateObject("scripting.dictionary")
    
    	for each chiave in base.keys
    		if isChild(parent_id,base.item(chiave)) then
    			tbase.add chiave,chiave
    		end if
    	next
    	
    	for each chiave in tbase.keys
    		
    		response.Write "<li style=""margin-left:" & margin_left*livello & """>" & stampa(chiave,base.item(chiave)) & ""
    		if hasChild(base.item(chiave)) then
    			stampa_menu chiave,livello+1
    		end if
    	next
    set tbase=nothing
    
    end sub
    
    function isChild(parent_id,obj)
    dim r
    r=false
    if instr(1,obj,"&|&" & parent_id & "&|&",1)>0 then r=true
    isChild=r
    end function
    
    function hasChild(obj)
    dim r
    r=false
    if instr(1,obj,"&|&F&|&",1)>0 then r=true
    hasChild=r
    end function
    
    function stampa(chiave,obj)
    dim nstr,ts
    nstr=split(left(obj,len(obj)-3),"&|&")
    
    ts="" & nstr(ubound(nstr)) & ""
    
    stampa=ts
    erase nstr
    end function
    			
    
    '***************************	STAMPO L'ALBERO
    response.write "<ul>"
    stampa_menu 0,0
    response.Write "[/list]"
    '***************************	FINE ALBERO
    
    set base=nothing

  7. #7

    Ma chi sei!!!

    Ciao Santino

    dunque...
    ho provato la procedura è funziona benissimo!!!

    Dopo che ho letto il tuo codice mi sono detto:<<Forse è meglio che cambio lavoro>>

    La capacità con cui hai saputo astrarre e implementare ricorsivamente la funzione ha dell'incredibile. Conosco anche io l'oggetto "scripting.dictionary" ma, nonostante siano ormai 2 settimane che ci ragiono su, non mi è mai balenata per la mente l'idea di sfuttarlo per creare la mappa.

    Ora voglio studiare la funzione con calma e capire bene tutti i vari steep.

    Nei miei siti eseguo un url-rewrite per cui il prossimo passo è creare indirizzi del tipo:

    Codice PHP:
    [url="Itinerari_turistici_nel_Delta/Comacchio/articolo_31.htm"]LA CITTA' DI COMACCHIO[/url] 
    Ci provo da solo anche se la vedo dura

    Un ultima domanda: da 1 a 10 che grado di difficoltà davi al mio problema?

    Grazie infiniteeeeeeeeeeeeeeeeeeee

  8. #8
    guarda davo un bel 8 di difficoltà solo perchè non sono riuscito a fare tutto usando i filter ma mi sono dovuto appoggiare al dictionary sarà che l'ho fatta all'una di notte come funzione...boh l'importante è che funzioni e ho cercato di ridurre all'osso lo spreco di risprse per cicli non necessari


  9. #9

    disperazione più totale

    Ciao Santino

    dopo innumerevoli tentativi direi che è arrivato il momento di arrendermi e chiedere disperatamente il tuo aiuto... ti giuro ce lo messa tutta. Ma ora che pure il mio Debug mi ha lasciato a piedi sono veramente fo...uto.

    La mappa che hai creato va benissimo ma bisogna rivedere il sistema di srittura degli URL dei link se no è tutto inutile.
    In sostanza bisognerebbe costruire un sistema url-rewriting dei link
    Ora con il sistema che hai impostato ottengo indirizzi del tipo:
    Codice PHP:
    nomepagina?ID=1
    nomepagina
    ?ID=2
    ... ...
    nomepagina?ID=
    mentre a me serve avere link strutturati in questa maniera:
    Codice PHP:
    news_1.htm
    news
    /articolo_2.htm
    news
    /articolo_n.htm
    ... ...
    vendita_case_16.htm
    vendita_case
    /articolo_45.htm
    vendita_case
    /articolo_n.htm
    ... ...
    affitti_turistici_17.htm
    affitti_Turistici
    /articolo_26.htm
    affitti_Turistici
    /articolo_n.htm
    ... ...
    itinerari_turistici_nel_delta_19.htm
    itinerari_turistici_nel_delta
    /comacchio_28.htm
    itinerari_turistici_nel_delta
    /comacchio/articolo_31.htm 
    oppure di questo tipo:
    Codice PHP:
    news/10_01_2006___apertura_nuova_sede.htm
    news
    /pattimare_5.htm
    ... ... 
    la differenza tra questi due metodi deve essere impostabile tramite la variabile
    Codice PHP:
    CONST urlNomeScheda 
     
    '0 = all'url che identifica la foglia viene associato un prefisso costante contenuto nella variabile "nomeScheda"
     '1 = all'
    url che identifica la foglia viene dato il nome della scheda opportunamente filtrato da  caratteri indesiderati (vedi FUNCTION Filtra_Nome(nome))
    Dim nomeScheda 
    nomeScheda 
    "articolo_"

    '********************************************************************************************************
    '
    Filtra la stringa passata come argomento al fine di evitare che nell'url del browser vengano passati nomi
    '
    conteneti caratteri specialiEsempio lo spazio " " verrebbe trascritto dai Browser come %20
    '********************************************************************************
    FUNCTION Filtra_Nome(nome)
    DIM nome_temp
        nome_temp = replace(nome,chr(224),"a") ' 
    (à)
        
    nome_temp replace(nome_temp,chr(232),"e"' (é)
        nome_temp = replace(nome_temp,chr(236),"i") ' 
    (ì)
        
    nome_temp replace(nome_temp,chr(242),"o"' (ò)
        nome_temp = replace(nome_temp,chr(249),"u") ' 
    (ù)
        
    nome_temp Super_replace(nome_temp)
        
        if 
    urlCaseSensitive 0 then
            nome_temp 
    LCase(nome_temp'converto tutti i caratteri in caratteri minuscoli
        end if
        
        Filtra_Nome = nome_temp 
        
    END FUNCTION
    sostituire tutti i caratteri che non sono lettere o numeri in un "_" (underscore)
    Function 
    Super_replace(stringa)
     
    dim re
     Set re 
    = new RegExp
     re
    .Global=True
     re
    .Pattern="\W"
     
    stringa re.Replace(stringa,"_")
     
    Super_replace=stringa
     Set re
    =nothing
    End 
    Function 
    l'impostazione della costante urlNomeScheda quindi definisce il diverso comportamento di scrittura del'url ma solo per le foglie "P" dell'albero.


    io lo già fatto ma con 3.000.000 di chimate al database invece so che basterebbe sfruttare il contenuto di questa variabile base=server.CreateObject("scripting.dictionary") invece di stressare il server.

    Non ci riesco...

    Per cui in ginocchio ti chiedo aiuto

  10. #10
    scusa scusa non ho capito: i nodi figli dovrebbero essere tutti articolo_XXX mentre i nodi padre che dovrebbero essere? dove trovo le informazioni per fare l'url rewriting dei nodi padre?

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.