Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Gestione degli ID

  1. #1

    Gestione degli ID

    Ciao ragazzi,
    volevo chiedervi se fosse possibile, al momento dell'aggiunta di un prodotto nel database, aggiungerlo con l'id mancante, che era quello del prodotto cancellato precedentemente.
    Esempio: ho una lista con ID dall'1 al 20... elimino il 15 e rimane un buco. Al momento dell'aggiunta di un nuovo prodotto vorrei che avesse l'ID 15, non il 21.
    E' possibile come cosa?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    In teoria si, ma se si trattasse di un campo auto_increment non credo sia una gestione sensata.
    L'id è in un campo auto_increment?

  3. #3
    No, non è auto-increment. Come posso fare?
    Perchè praticamente nella funzione save() ,dove vado ad aggiungere il nuovo campo, mi prende il MAX ID andandomelo poi ad inserire. Quindi non saprei come fare visto che ogni volta mi prende il valore più alto

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Devi modificare il codice di quella funzione in modo che prenda tutti gli id presenti in ordine crescente, poi devi ciclare su tale risultato alla ricerca del primo id mancante, quello sarà l'id dell'elemento da inserire.
    Se non vengono trovati id mancanti, allora non ci sono "buchi" e devi inserire l'id come fa adesso.

  5. #5
    Codice PHP:
    //Questo equivale al numero di risultati della tua query
    //che farai per avere un elenco degli ID che hai
    //(mysql_num_rows)
    $tot_risultati 5;

    //Questa array rappresenta la colonna dei tuoi ID
    //dove mancano gli ID eliminati in precedenza
    //(sarebbe la variabile $row['nome_colonna'])
    $ID = array();
    $ID[0] = 1;
    $ID[1] = 2;
    $ID[2] = 4;
    $ID[3] = 6;
    $ID[4] = 7;

    //Crei un ciclo for che individua se è stato
    //saltato un id
    for($i=0$i<$tot_risultati 1$i++)
    {  
        
    //trovo l' id successivo  
        
    $ID_successivo $ID[$i +1];        

       
    //se l' id successivo - l' id attuale è diverso da 1    
       //significa che è stato eliminato un id    
       
    if ($ID_successivo $ID[$i] != 1)    
       {       
           
    //questo è l' id da inserire in sostituzione       
           //di quello eliminato in precedenza       
           
    $id_da_inserire $ID[$i] + 1;       

           
    //blocco il ciclo perchè ho trovato il primo id mancante       
           
    break;                                                     
        }


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.