Visualizzazione dei risultati da 1 a 5 su 5

Discussione: ordinamento dei menu

  1. #1

    ordinamento dei menu

    ciao

    la mia è una domanda + a livello concettuale

    ho una tabella menu costituita dai campi

    nome
    url
    ordinamento (int)

    quando elenco il mio menu io faccio una cosa tipo select * from menu order by ordinamento desc

    ho poi delle funzioni che incrementano e decrementano di 1 il valore di un record per gestire l'ordinamento del menu lato utente

    il mio problema è questo, supponiamo di avere 5 voci

    uno - 0
    due -0
    tre -0
    quattro -0
    cinque -0

    quando chiedo di alzare cinque di uno io mi ritrovo un menu del genere

    cinque -1
    uno - 0
    due -0
    tre -0
    quattro -0

    a questo punto per mettere cinque al quarto posto devo alzare uno di 2 due e via cosi per tutti gli altri

    uno - 2
    due -2
    tre -2
    cinque -1
    quattro -0

    secondo voi questo è l'unico metodo per ordinare un menu a scelta dell'utente o ci sono soluzioni piu eleganti?

    ciao e grazie
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Io personalmente ho realizzato vari pannelli per permettere all'utente di decidere l'ordine di certe categorie. Diciamo che la cosa ideale sarebbe fare in modo che al momento dell'inserimento di una nuova voce, il campo ordinamento sia già riempito con il valore ultimo, ovvero:

    SELECT FROM tabella MAX(ordinamento)

    A questo si somma uno ed ottine il prossimo valore disponibile nell'elenco ordinato.

    Cosi facendo ad esempio quando hai una sola voce:

    uno - 0

    e inserisci una seconda voce "due"

    otterrai

    uno - 0
    due - 1

    Una specie di auto_increment insomma.

    Ovviamente poi va valutata la cancellazione di elementi intermedi e il "riassestamento" della sequenza dell'elenco.

    Non so se ho risposto esattamente al tuo dubbio, cmq se vuoi ho del codice di ordinamento da postarti se potesse interessarti.


  3. #3
    ti ringrazio, il mio dubbio era più sul concetto

    nel senso, è giusta la "nostra" soluzione (che comporta accorgimenti e continui controlli) o c'è un pattern migliore?

    ciao e grazie
    "durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."

    http://www.kumbe.it

  4. #4
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Che io sappia questo è il metodo migliore.
    Ma non essendo un genio della matematica concettuale non posso darti la certezza

    Gia' il fatto che nessun altro ci abbia smentiti presumo sia un ottimo segno


  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    43
    forse si puo fare cosi , usando i decimali

    uno - 1
    due -2
    tre -3
    quattro -4
    cinque -5

    modifico il record del "quarto" per spostarlo al secondo posto


    uno - 1
    due -2
    tre -3
    quattro -1,1
    cinque -5


    e poi un bel ORDER BY

    uno - 1
    quattro -1,1
    due -2
    tre -3
    cinque -5

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.