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

    [PHP - MYSQL] campo "ordine" scalare

    ok...so che il titolo non è molto esplicativo, ergo cerco di spiegarmi al meglio:

    ho bisogno di inserire un campo "ordine" nel mio db. il campo deve permettere all'utente di inserire un numero (progressivo) che serva poi a stabilire l'ordine della tabella. il problema sorge quando l'utente decide di modificare il suddetto numero e di conseguenza far scalare tutti gli altri...faccio un esempio: se nel campo ho immesso il numero 7 e dopo lo modifico ed inserisco 1 devo far scalare i numeri da 2 a 6....

    ecco il problema sorge nel COME...

    qualche consiglio?
    qualche metodo più veloce?


    grazie..


    ps:è urgentino...
    Ricorda che mentre tu sei quì a ridere e scherzare, nel mondo c'è qualcun'altro che ride e scherza più di te!

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Sembrera' banale ma se ti serve per una sola visulizzazione dei dati e' abbastanza un order by asc o desc.

  3. #3
    credo che questo lo sappia anche lui... il suo problema è come gestire le modifiche successive.

    Mi ero posto anche io il tuo problema bikfellas...

    Secondo me la cosa si può risolvere in questo modo:

    fai una funzione che scambia 2 posizioni, del tipo:

    Codice PHP:

    /*
    passare i parametri per riferimento
    */
    function scambia($a,$b){
    $tmp=$a;
    $a=$b;
    $b=$tmp;

    e poi la chiami ogni volta che devi alzare o abbassare un record...
    "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
    infatti, grazie nik600 per l'anticipazione...non è una sola questione di ordinamento. la parte più ostica è quella inerente lo shifting dei dati.

    il primo pensiero è stato quello di fare qualcosa silmile al tuo...il problema, di tipo logico è che se un record aveva "ordine" pari a 30 e poi passa a 1 è ok, il problema è che dal punto di vista logico l'1 non può diventare 30 ma dovrebbe diventare 2 e così via...


    mi semba un po' dispendioso a livello di server fagli eseguire n query (in questo caso 30) per un solo dato...conoscendo il cliente, loro faranno 3000000000 cambi al giorno

    grazie comunque a chiunque


    b
    Ricorda che mentre tu sei quì a ridere e scherzare, nel mondo c'è qualcun'altro che ride e scherza più di te!

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    per me devi mettere a 0 o -1 l'ordine dei dati da spostare, poi aggiornare con un +1 l'ordine dei dati compresi dall'ordine da spostare a quello spostato e poi aggiornare con 'ordine giusto i dati parcheggiati sullo 0 o -1.
    ma in questo modo (0 o -1) avrai problemi in caso di operazioni concorrenti, ti serve un'altro campo sul db che ti identifichi univocamente l'operazione o un semaforo.

  6. #6
    grazie stabi,

    non ho però ben capito l'opzione del "semaforo"
    che cosa è?


    grazie
    Ricorda che mentre tu sei quì a ridere e scherzare, nel mondo c'è qualcun'altro che ride e scherza più di te!

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    é un valore scritto da qualche parte che può essere su una apposita tabella del db o su un file in cui prima di iniziare verifico che il suo contenuto sia "libero" e se è vero lo metto occupato e procedo agli aggiornamenti. Alla fine lo rimetto "libero". Se "occupato" aspetto che si liberi.

    Chiaro? è per evitare la concorrenza.

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.