Visualizzazione record con ordine personalizzato

Ho due tabelle correlate:

###############################################

TABELLA: menu

(int) id_menu | (varchar) nome_menu

PRIMARY KEY  id_menu

TABELLA: sottomenu

(int) id_menu | (int) id_sottomenu | (varchar) nome_sottomenu

PRIMARY KEY id_menu, id_sottomenu

###############################################

Il campo nome_menu contiene le voci di un menu di navigazione di un sito ed il campo nome_sottomenu contiene le sottovoci associate. Vengono visualizzate in questo modo:

menu1

   sottomenu1

   sottomenu2

   sottomenu3

menu2

  sottomenu1

  sottomenu2

menu3

   sottomenu1

   sottomenu2

La relazione tra le due tabelle è ovviamente mantenuta da id_menu presente in entrambe.

Ora supponiamo che dal pannello di amministrazione del sito io voglia lasciare all'amministratore la facoltà di modificare a suo piacimento l'ordine di visualizzazione di menu e sottomenu.

In riferimento all'esempio precedente, che rispecchia l'ordine di inserimento dei record, l'amministratore dovrebbe essere in grado di fare qualcosa del genere:

menu3

   sottomenu2

   sottomenu1

 menu2

  sottomenu1

  sottomenu2

menu1

   sottomenu2

   sottomenu3

   sottomenu1

Personalmente, da amministratore, vorrei essere in grado di fare ciò ma non sono sicuro di sapere come fare.

 Ho fatto queste riflessioni:

1) Con ORDER BY non si può fare nulla del genere;

2) scambiare i valori dei campi di chiave primaria non mi pare una strada percorribile;

3) l'unica soluzione, che non mi pare granché sebbene realizzabile, è di aggiungere un campo "ordinamento" nel quale memorizzare con numeri crescenti la scelta di visualizzazione dell'amministratore.

id_menu  |  ordinamento  |  nome_menu

1                         3                   menu1

2                         2                   menu2

3                         1                   menu3

Così recuperando con la clausola "ORDER BY ordinamento ASC" potrei avere menu3 al primo posto e così via.

Non so, che ne pensate, a senso mi sembra una soluzione forse un po' grossolana.

Un parere, grazie.   :bye:

inviato 10 anni fa
usecram
X 0 X

Hai centrato la soluzione  O0 E' esattamente quello che si fa in questi casi.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

[move]Mitico!!![/move]

risposto 10 anni fa
usecram
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda