Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    40

    menu php gerarchico con macroarea

    Ciao, spero possiate darmi una dritta perché non so come proseguire...
    ho una tabella "indici" che rappresenta le pagine del sito e viene aggiornata dinamicamente tramite cms e crea una struttura gerarchica. Devo effettuare una modifica nel funzionamento per supportare "macroaree".
    ESEMPIO
    --------------------------------------------------
    ID| NOME | POSITION | PARENTID | AREA
    1 Home 0 0 1
    2 Notizie 1 0 2
    3 Giochi 2 0 3

    Ottengo

    HOME
    NOTIZIE
    GIOCHI
    ---------------------------------------------------
    ID| NOME | POSITION | PARENTID | AREA
    1 Home 0 0 1
    2 Notizie 1 1 2
    3 Giochi 2 0 3

    Ottengo

    HOME
    ----NOTIZIE
    GIOCHI
    -------------------------------------------------------
    A questo punto volevo però che l'area di "notizie" fosse la stessa di "home" essendo la voce sua figlia. Per fare questo ho faticato ma sono riuscito con questo codice molto artigianale:

    $querym1up="UPDATE indici SET macro = ID WHERE parentID ='0'";
    mysql_query($querym1up); //setto la macroarea per la pagina "root" che ha parentID=0

    $query1s="SELECT ID FROM indici";
    $resultq1s = mysql_query($query1s);
    while($rq1s=mysql_fetch_array($resultq1s))
    { $ids = $rq1s;
    foreach ($ids as $idmacro){
    $querym2up="UPDATE indici SET macro = '$idmacro' WHERE parentID ='$idmacro' ";
    mysql_query($querym2up);
    }
    }
    -------------------------------------------------
    Con questo ottengo

    ID| NOME | POSITION | PARENTID | AREA
    1 Home 0 0 1
    2 Notizie 1 1 1
    3 Giochi 2 0 3
    --------------------------------------------------
    Adesso il difficile...
    Aggiungo un figlio al figlio per ottenere questo:

    -----------------------------------------------------
    HOME
    -----NOTIZIE
    ---------CULTURA
    GIOCHI

    E la tabella diventa:

    ID| NOME | POSITION | PARENTID | AREA
    1 Home 0 0 1
    2 Notizie 1 1 1
    3 Giochi 3 0 3
    4 Cultura 2 2 2
    ----------------------------------------------------------
    Come potete vedere l'area di "cultura" non è la stessa del genitore e del genitore del genitore (la macroarea che dovrebbe essere 1 in questo caso)
    Non riesco a settare la stessa area del genitore per il figlio del figlio
    Quale la relazione che li lega? Devo vedere se l'elemento ha un ID parente, se ce l'ha settarne l'area come quella del genitore? Come il parentID del genitore? E come???!!!
    Ho provato in vari modi ma non riesco a capire come risolvere
    E' importante... se vi servono altre info son qui.....
    ciao.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    40
    Qualche idea?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    40
    Illuminazione: posso utilizzare il dato "position" in qualche modo? Mi spiego meglio.
    Logicamente voglio assegnare a tutti gli elementi appartenenti alla stessa macroarea lo stesso numero.
    A "dividere" gli elementi di un'area e un'altra c'è l'elemento radice con parentID = '0'.
    Posso selezionare solo gli elementi tra un'area e l'altra, tra uno '0' e un altro utilizzando il dato position?

    ID --ELEMENTO-----POSITION-------PARENTID------AREA
    8-------A--------------0------------------0-------------X
    9-------A1-------------1------------------8-------------X
    7-------A2-------------2------------------9-------------X
    5-------D---------------3------------------0-------------X
    6-------D1--------------4-------------------5-------------X

    Ho la struttura
    A
    --A1
    ----A2
    D
    --D1

    In pratica, a occhio e ordinando il tutto per "position" vedo che tra i parentID '0' e '0' ci sono quelli con parentID 8 e 9: questi vorrei renderli entrambi con la stessa area del genitore(id 8). E lo stesso per i successivi.. Si può fare?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    40
    A prescindere dal menù gerarchico, c'è un modo per fare quanto detto sopra?

    Se trovo tutte le position dove parentid = 0
    ho la posizione minima e massima , per le voci intermedie setto la stessa macroarea. Ma non so come tradurlo, perché le position che trovo sono
    minima, massima (per l'elemento che segue la massima diviene la minima)

    0 (x minimo), 1, 2, 3, 4, .., .., X massimo che diventa x minimo successivo

    Mi sa che sono fuoristrada... HELP

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    40
    Sto cercando di risolvere con javascript, dunque solo a livello di presentazione.. Non è il massimo ma sembra funzionare.. Ciao.

  6. #6
    mah guarda, in genere si fa

    id - name - position - parent_id

    dove id è l'id del record, name è il nome del menu (Home/Notizie/Giochi) e parent_id è l'elemento di menu padre

    detto ciò, in genere le macroaree sono menu che hanno parent_id a nullo, e gli latri sono elementi di menu

    o al limite puoi aggiungere un campo flag per dire se quell'elemtno è una macro area o meno

    quindi non capisco dove sia il tuo problema
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    40
    Grazie Santino, il problema è fargli capire che il figlio del figlio ha il padre = '0', sto cercando di risolvere tramite jquery..

  8. #8
    Originariamente inviato da Flaquiz
    Grazie Santino, il problema è fargli capire che il figlio del figlio ha il padre = '0', sto cercando di risolvere tramite jquery..
    e perchè? A rigor di logica, tu ti devi solo preoccupare di avere una struttura dati che rappresenti l'albero del tuo menu, che c'entra i figli dei figli il parent id?

    cmq, o ti fai una funzione ricorsiva nel database, oppure quando inserisci il figlio ti porti anche l'id della radice associata e lo salvi nel database. lascia perdere jquery. oppure lo fai direttamente in php dopo che hai estratto i dati che ti servono.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    40
    Ottengo già la struttura ad albero che rappresenta l'insieme delle voci del menù, ordinate per position dove le radici sono con parentid= 0. Il problema è di associare il menù alle pagine del sito. Es. Sono in homepage, voglio visualizzare solo le sottovoci della radice "home", le sottovoci delle sottovoci invece non sarenno visibili. Se clicco su una sottovoce con figli, entrerò nella pagina della sottovoce e a quel punto visualizzerò anche i figli. Credo non sia semplice.. per quello mi stavo affidando a un menù jquery stile accordion, anche se avrei preferito una soluzione full php.

  10. #10
    Originariamente inviato da Flaquiz
    Ottengo già la struttura ad albero che rappresenta l'insieme delle voci del menù, ordinate per position dove le radici sono con parentid= 0. Il problema è di associare il menù alle pagine del sito. Es. Sono in homepage, voglio visualizzare solo le sottovoci della radice "home", le sottovoci delle sottovoci invece non sarenno visibili. Se clicco su una sottovoce con figli, entrerò nella pagina della sottovoce e a quel punto visualizzerò anche i figli. Credo non sia semplice.. per quello mi stavo affidando a un menù jquery stile accordion, anche se avrei preferito una soluzione full php.

    aaaah ok... full php è semplice: tu sai in php in che pagina ti trovi? se si, quando vai a fare il print del menu, sai se devi entrare o meno in un ramo e quindi stamparlo, altrimenti stampi solo le radici. se non lo sai, sallo

    quindi il tuo problema a quel punto è sapere che una pagina è di un menu, diciamo quindi di sapere il site map in un certo modo. Ma lo stesso problema ce l'hai in jquery, perchè in jQuery altrimenti come fai a sapere che homepage è del menu, ad esempio, "Home" e "i miei hobby" (altra pagina) del menu "about me"? da qualche parte ti devi fare questa associazione, o hard coded o nel db, ma senza questa associazione non puoi farlo neanche in jquery il discorso


    se poi è un menu che se cliccki su un area chiusa, ti apre i figli, allora tu associ la pagina X all'area Y, e quando stai in X richiami una funziona js del tipo "openArea(Y)" e questa ti apre il menu... ma sempre devi avere associazione tra pagina e menu. Quindi non è un problema di albero del menu, ma un problema proprio di sitemap
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.