manu dinamico gerarchico

ciao,

ho un problema con un menu di navigazione dinamico.

Praticamente è costruito con i CSS e JS controlla l'apertura dei vari livelli ( a me servono 4).

Tramite query estraggo i dati e con un ciclo while poi popolo i links alle pagine nei vari livelli.

All'interno del while devo mettere il <li></li> perchè è dinamico e quindi il numero di voci varia:

$query = "SELECT * FROM categorie";
   $select = mysql_query($query)or die(mysql_error());
   while($result = mysql_fetch_array($select)){
   
   echo "<li><a href=\"\"></a></li>\n";

il problema è che in presenza di un sotto livello, l'ultima voce deve avere il <li> aperto perchè ha annidato appunto un sottolivello.

Domanda, come potrei fare dopo aver eseguito la query dire: " se è presente un sottolivello togli la chiusura l'ultimo </li>, in caso non sia presente, chiudi pure.."

spero di essere stato abbastanza chiaro.

Eventualmente sono aperto a soluzioni differenti.

Grazie mille!

 :bye:

inviato 11 anni fa
iTek
iTek
1
X 0 X

TI propongo uno schema concettuale

1) query

2) while risultati

   3) echo <li>

   4) echo titolo principale

   5) cerco sottolivelli

   6) se presenti sottolivelli

      7) while sottolivelli

      8) <li> sottolivello </li>

   9) echo </li>

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

ma così mi fermo a uno solo sotto livello:

<ul>

<li> primo livello

<ul>

<li>secondo livello 1</li>

<li>secondo livello 2  <--- lascio aperto <li>: c'è un sotto livello

<ul>

<li>terzo livello 1</li>

<li> terzo livello 2 <-- lascio aperto <li>: c'è un sotto livello

<ul>

<li>quarto livello</li>

</ul>

</li>

</ul>

</li>

</ul>

che casino da spiegare :D

non so se è chiaro, ma il concetto html è semplice.

nell' echo del while io devo mettere <li>e </li> perchè se è presente più di un prodotto il </li> va chiuso,

 echo "<li><a href=\"\"></a>$result["nome"];</li>\n";

ma se nell'estrazione dell'ultimo prodotto è presente un altro sottoprodotto ( o livello), dovrei lasciare aperto il <li> per permettere di annidare il livello e così via...

mi spiego?

risposto 11 anni fa
iTek
iTek
1
X 0 X

con quale meccanismo verifichi la presenza delle sottocategorie? Posta un po' di codice

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

eh , qui a dire la verità non ci sono  ancora arrivato.

pensavo di fare tante query quante sono le sottocategorie, ad esempio:

categorie--->query+while -->livello1

tipologie--->query+while--->livello2

prodotti--->query+while--->livello3

dettaglio--->query+while--->livello4

nel caso in cui in un sottolivello non ci sia niente, non mi stampa niente nel menu...

non so se è una soluzione praticabile..

che dici?

risposto 11 anni fa
iTek
iTek
1
X 0 X

sono tutte tabelle differenti (categorie, tipologie, ecc)?

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

si sono tutte tabelle differenti collegate fra loro a cascata, cioè ogni livello contiene l'id del livello precedente

risposto 11 anni fa
iTek
iTek
1
X 0 X

allora la cosa non è difficile, basta una sola query di tipo

SELECT * FROM categorie c

LEFT JOIN tipologie t ON c.categoria_id = t.categoria_id

LEFT JOIN prodotti p ON t.tipologia_id = p.tipologia_id

LEFT JOIN dettaglio d ON p.prodotto_id = d.prodotto_id

ORDER BY c.categoria_id, t.tipologia_id, p.prodotto_id

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

ok, perfetto!

ma come risolvo il problema della visualizzazione dei risultati all'interno del menu?

risposto 11 anni fa
iTek
iTek
1
X 0 X

ok, perfetto!

ma come risolvo il problema della visualizzazione dei risultati all'interno del menu?

 ???

risposto 11 anni fa
iTek
iTek
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda