Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    [mysql/php] invertire id

    ciao, mi spiego subito, ogni utente ha dei record con id autoincrement, quindi un utente potrebbe avere dei record così:

    id
    1
    2
    3
    5
    9
    15
    16
    24

    siccome gli id mancanti potrebbero essere record cancellati.

    io ora ho creato una select per ogni record con citazione "sposta dopo: (lista record)", così ho l'id da spostare e l'id da rimpiazzare, in pratica devono switcharsi tra loro.

    es: l'id 16 va al posto del 3 e il 3 al posto del 16..

    come posso invertire questi id, avendo tutti i dati a disposizione?

    thx sin da ora

  2. #2
    Aggiungi alla tabella un campo numerico tipo "ordine" e gestisci con quello l'ordinamento dei record.

  3. #3
    non so xke ma mysql non mi lascia fare oltre 1 campo autoincrement ad ogni modo anche avendolo non risolverebbe nulla, non mi serve sapere che sistema usare ma come switchare 2 id

  4. #4
    Forse non mi sono spiegato bene.

    NON devi creare un nuovo campo AUTOINCREMENT. DEVI creare un campo numerico nel quale inserisci l'ordine di estrazione dei record. NON puoi "invertire" dei campo AUTOINCREMENT, men che meno delle chiavi.

  5. #5
    ma comunque il campo "positione" dovrà avere dei dati crescenti tipo
    1
    2
    3
    4
    ...


    anche non incrementandolo automaticamente ma facendolo manualmente dovrò comunque poter switchare i 2 valori

  6. #6
    E quale è il problema?

    Lo puoi fare con due query di UPDATE.

  7. #7
    proprio qui stava il problema, che non me lo fa

  8. #8
    Chi "non te lo fa fare"?

    Hai aggiunto un nuovo campo numerico NON AUTOINCREMENT?

  9. #9
    si, il campo ID primary l'ho creato facendo un'algoritmo tra data in millisecondi e a-9 random, quindi non è + autoincrement, poi un campo "positione" e quello è autoincrement.

    ora ho i valori

    id posizione

    xx 1
    xx 2
    xx 3


    però mi rimane comunque il problema iniziale, e anzi uno in più, invertire 2 record bene o male dovrei riuscirci, uso le 2 fatidiche update, speravo in una sola, ora è sorto il problema, se invece di switcharli volessi fare

    "sposta dopo:" o "sposta prima:"...

    dovrei cambiare tutti gli altri valori? se spostassi un record al 60000esimo posto alla posizione 3, tutti quelli in mezzo dovrebbero aumentare di 1.. i record potrebbero essere anche 16mila..

  10. #10
    Originariamente inviato da progalba
    si, il campo ID primary l'ho creato facendo un'algoritmo tra data in millisecondi e a-9 random, quindi non è + autoincrement, poi un campo "positione" e quello è autoincrement.
    Non mi sembra tu abbia capito molto di quanto scritto fino ad ora.

    Il campo posizione NON DEVE ESSERE AUTOINCREMENT. DEVE ESSERE UN SEMPLICE CAMPO NUMERICO.

    Codice PHP:
    CREATE TABLE ordered (
      
    id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
      
    position INTEGER UNSIGNED NULL,
      
    username VARCHAR(255NULL,
      
    PRIMARY KEY(id)
    ); 
    NON PUOI modificare il valore di un campo AUTOINCREMENT, DEVI utilizzare un campo numerico.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.