Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    problema con menu gerarchico dinamico

    ciao,

    ho un menu gerarchico che voglio popolare dinamicamente.
    il menu è fatto in css e JS.

    All'interno della pagina faccio la query che mi estrae i dati dal DB

    codice:
    SELECT *
    FROM categorie c
    LEFT JOIN tipologia t ON c.id_cat = t.id_cat
    LEFT JOIN prodotti p ON t.id_tipologia = p.id_tipologia
    LEFT JOIN dettaglio d ON p.id_prodotto = d.id_prodotto
    ORDER BY c.id_cat, t.id_tipologia, p.id_prodotto
    LIMIT 0 , 30
    a questo punto devo inserire la categoria principale e le sottocategorie dinamicamente all'interno dei tag <ul>[*]
    in modo tale da annidarli creando il menu gerarchico.

    il problema è che se uso un ciclo while devo mettere al suo interno[*] con il tag chiuso se è presente più di un dato, ma l'ultimo dato estratto deve mantenere il tag[*] aperto per permettere di annidare una sottocategoria, se è presente....
    e non so come fare per dire:
    se nel livello successivo è presente una sottocategoria con dei dati, allora NON chiudere il[*]

    Mi spiego? spero di si..

    sono completamente bloccato a causa di questo...

  2. #2
    ...up....

  3. #3
    penso che dalal selct * tu ottenga dati simili a questi...
    ogni record estartto ti dice se ha o no ha uan sottocategoria


    $categoria = $row[categoria];
    $subCategoria = $row[subCategoria];

    print("<il>".$categoria);
    if ($subCategoria)
    {
    //fai quel che devi fare
    //fai girare un ciclo per scrivere le sottocategorie
    }
    else
    {
    print("</il>");
    }
    http://www.mcganass.com

  4. #4
    si ma così, se io ho più di un dato estratto per subcategoria, non chiudo mai il quindi la lista non può funzionare..


  5. #5
    ordina la query per categoria
    e crea dai risultati un array del tipo


    $arrayCategoria[1][0]="nome categoria 1";
    $arrayCategoria[1][1]="nome prima sottocategoria";
    $arrayCategoria[1][2]="nome seconda sottocategoria";
    $arrayCategoria[2][0]="nome categoria 2";
    $arrayCategoria[2][1]="nome prima sottocategoria 2";
    etc etc

    dove ilprimoindice dell'array indica la categoria e il secondo indica la sottocategoria

    e poi qui fai giare un ciclo

    for ($a=0; $a<$nCategorie; $a++)
    {
    print $arraycategoria[$a][0];
    for($b=0; $b<$nSottoCatehorie; $b++)
    {
    print $arraycategoria[$a][$b];

    }
    }

    dove $nCategorie e $nSottoCatehorie sono il numero di categorie e di sottocategorie che calcoli di volta in volta
    http://www.mcganass.com

  6. #6
    mmmh non capito una cosa però,

    quegli array li devo creare manualmente?

    no perchè allora non mi serve a niente, dato che il numero di categorie e dati inseriti nelle subcategorie possono variare.
    quello che rimane invariato è il numero dei livelli che devo inserire nel menu:

    categorie--->livello1
    tipologie--->livello2
    prodotti--->livello3
    dettaglio--->livello4

  7. #7
    no non li creai a mano

    li fai creare in automatico


    i record che ti resituisce la select dovrebbe essere se la ordini per categorie qlcosa di simile a

    categoria 1, sottocategoria 1
    categoria 1, sottocategoria 2
    categoria 1, sottocategoria 3
    categoria 2, sottocategoria 1
    categoria 3, sottocategoria 1
    categoria 3, sottocategoria 2

    qui costrusici l'array in modo autoamico, sei gia dentro il ciclo while



    $arrayCategorie[$categoria][$sottocategoria]=$sottocategoria;
    $sottocategoria++;
    http://www.mcganass.com

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.