Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313

    Ordine di visualizzazione menu

    Salve a tutti amici, sto costruendo un piccolo portale e prima di creare le pagine stò realizzando una funzione che mi permetterà di modificare il menù a mio piacimento, durante la stesura mì è sorto un piccolo dilemma come faccio ad ordinare la visualizzazione???

    Vi spiego, in mysql ho le seguenti voci di ordinamento
    id: id record auto increment
    nome: nome voce del menu
    ordine: ORDINE DI VISUALIZZAZIONE
    visualizza: posto a 0 per visualizzare la voce e a 1 per nasconderla

    ho già fatto le funzioni principali "Inserisci Cancella Modifica"

    Funziona tutto perfettamente, adesso quello che mi chiedo è come faccio gestire per bene la voce ORDINE ?

    Andando per logica di procedimento:
    1° caso) inserimento 1° voce, deve assumere valore 1, 2° voce, deve assumere valore 2 e così via

    2° caso) se cancello una voce il DB deve eseguire una specie di funzione sort e rimpiazzare l'ordine della voce mancante


    In teoria queste due cose sono semplici, ma come faccio ad eseguire questa cosa nel miglior modo possibile ?

    vi ringrazio anticipatamente per l'aiuto

  2. #2
    Non si capisce quale sia il tuo vero problema. Vuoi ordinare i dati secondo un campo che hai nel database(ad esempio id), oppure ordinarli nella pagine tramite un'altra stringa di codice?
    Perchè se vuoi ordinare la stampa direttamente dal database devi solo scrivere nella SELECT(dopo WHERE): "ORDER BY id(ad esempio)", se poi vuoi ordinarli in maniera crescente o decrescente devi scrivere dopo ORDER BY .. "DESC oppure ASC". Questi sono i comandi da usare, se invece non li vuoi mettere dalla query(magari perchè devi confrontarlo con altri dati nella pagina) allora devi settare molte variabili...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313
    Ti chiedo scusa se non si è capito molto bene, comunque la visualizzazione è l'ultimo dei problemi, infatti il mio problema è sull'inserimento...

    Beh per la prima problematica sono riuscita a risolverla e ti spiego come, prima di inserire il nuovo record nel db, lo leggo e poi con un semplice
    count($record)+1
    inserisco il nuovo ordine di visualizzazione quindi avrò una cosa di questo genere
    ID***NOME***ORDINE***VISUALIZZA
    1***Home****1********0
    2***Contatti**2********0
    3***Links****3********0

    Adesso ipotizzando che cancello la voce Home nel mio DB ci dovrà essere questo:

    ID***NOME***ORDINE***VISUALIZZA
    2***Contatti**1********0
    3***Links****2********0

    come faccio ad eseguire la funzione per cambiare la voce ordine ?

  4. #4
    Scusa ma non si capisce ancora bene cosa cerchi veramente. Il campo ordine come è settato? E' un campo che si setta da solo nella pagina o lo setti tu dal database?
    Da quel che vedo l'ordine nella pagina sembra essere stabilito dal campo id più che dal campo ordine. Un'altra cosa che non si capisce e se Home, Contatti, ecc, sono nomi di altri campi o sono valori, ovvero i campi sono id, nome, ecc, e in home al posto di vedere la scritta home appare un'indirizzo verso un sito, e così via.
    Per correggere il tuo problema inoltre è necessario che posti anche il codice che hai usato, altrimenti come possiamo fare a vedere l'errore?

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Io ti consiglio di fare delle funzioni sposta-su sposta-giù e non di dare la possibilità di scegliere direttamente la posizione. in questo modo rendi più semplice la gestione:

    1. inserimento: va bene come hai fatto, al nuovo elemento dai come posizione count()+1
    2. cancellazione: basta che decrementi di uno la posizione degli elementi che hanno
    posizione > di quella che cancelli:
    Codice PHP:
        UPDATE menu SET posizione posizione -
        WHERE posizione 
    $posizione_elemento_da_cancellare 
    3 sposta su : incrementi di uno la posizione del elemento che lo precede. decrementi la posizione dell'elemento da spostare
    Codice PHP:
        UPDATE menu SET posizione posizione 
        WHERE posizione 
    = ($posizione_elemento_da_cancellare -1);
        
        
    UPDATE menu SET posizione posizione -
        WHERE id 
    $id_elemento_da spostare
    4 sposta giù: come sposta-su ma con i segni invertiti

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.