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

    Cambiare l'ordine di inserimento

    Ciao a tutti.

    Ho creato una consolle di gestione per degli articoli, dando la possibilità di dar loro un ordine.

    Posso intervenire sul singolo articolo cambiando il numero d'ordine facendo un "UPDATE ID --> ordine", ma se viene immesso un numero già presente, questo viene accettato tranquillamente (voglio che il campo ordine in MySQL sia notnull).

    Vorrei far si che cambiando il n° d'ordine si aggiornassero tutti i successivi n° d'ordine.

    La struttura della tabella è:

    ID|ordine|nome_articolo|ecc...

    Grazie in anticipo

    Max

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Per rendere univoco l'ìd nella definizione della struttura della tua tabella devi usare la funzione auto_increment di mysql.
    Cioè il campo che vuoi che sia univoco lo definisci ad esempio come int, auto_increment, unsigned (cioè valori solo positivi) e not null.

  3. #3
    Ok quello l'ho fatto.
    Ma il mio problema è relativo ad una possibile interfaccia di modifica dell'ordine dei miei dati.
    Spero di riuscire a spiegarmi meglio:

    Ho una serie di articoli (immagini o altro) che ho inserito attraverso una consolle (tramite un form) che ho creato io.

    Attraverso questa consolle imposto un ordine di "apparizione".

    Per modificare i dati ho creato una pagina (form) che mi presenta i dati inseriti e me li fa modificare. Attraverso la stessa modifico oltre che i testi ed eventuali immagini, anche l'ordine.

    Problema 1:
    Posso modificare solo l'ordine di un articolo ala volta

    Problema 2:
    Se inserisco un nmero già presente nel campo "ordine" questo viene accettato anche se già presente.

    Mio sogno 1:
    Poter avere una pagina che mi permetta di modificare il campo "ordine" su più record contemporaneamente.

    Mio sogno 2:
    Poter variare il campo "ordine" ad un solo articolo aggiornando contemporaneamente i campi "ordine" di tutti gli articoli presenti.

    Mio sogno 3:
    Fare entrambe le cose.

    Spero di essermi spiegato e mi scuso in anticipo per l'eventuale confusione espressa.

    Grazie in anticipo e ciao a tutti.

    MAX

  4. #4
    Originariamente inviato da maxam
    Ok quello l'ho fatto.
    Ma il mio problema è relativo ad una possibile interfaccia di modifica dell'ordine dei miei dati.
    Spero di riuscire a spiegarmi meglio:

    ........
    Stesso problema ma x una galleria immagini!! tu hai risolto?
    saludos,Kosee

  5. #5
    Originariamente inviato da kosee
    Stesso problema ma x una galleria immagini!! tu hai risolto?
    Io ho risolto mettendo un campo form con l'ordine e il tasto submit per cambiarlo.

    il problema è che quando cambio l'ordine ad un elemento, devo andare a cambiare anche gli altri altrimenti si creano doppioni.

    Per ovviare uso ordinamenti tipo 10, 20, 50 per avere a disposizione dei buchi.

    Non tecnico ma funziona abbastanza bene...

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    Una possibile soluzione: quando qualcuno mette un articolo di ID=x al posto n-esimo fai:

    BEGIN TRANSACTION
    UPDATE tabella SET ORDER=ORDER+1 WHERE ORDER >= N AND ID!=x
    UPDATE tabella SET ORDER=ORDER-1 WHERE ORDER < N AND ID!=x
    UPDATE tabella SET ORDER=n WHERE ID=x
    SELECT MIN(ORDER) FROM tabella
    UPDATE tabella SET ORDER=ORDER-minOrder
    END TRANSACTION
    There are 10 types of people in the world - those who understand binary and those who don't.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    Forse si puo' ottimizzare un pelo ma sono stanco
    There are 10 types of people in the world - those who understand binary and those who don't.

  8. #8
    Originariamente inviato da frinkia
    Una possibile soluzione: quando qualcuno mette un articolo di ID=x al posto n-esimo fai:

    BEGIN TRANSACTION
    UPDATE tabella SET ORDER=ORDER+1 WHERE ORDER >= N AND ID!=x
    UPDATE tabella SET ORDER=ORDER-1 WHERE ORDER < N AND ID!=x
    UPDATE tabella SET ORDER=n WHERE ID=x
    SELECT MIN(ORDER) FROM tabella
    UPDATE tabella SET ORDER=ORDER-minOrder
    END TRANSACTION
    Non sono un programmatore, ma spero di riuscire a modificase il mio script in base alle tue informazioni.

    Grazie

    MAX

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.