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

    [mysql] numerazione automatica in ordine

    Ciao a tutti,

    Vi spiego cosa dovrei fare

    sulla tabella ho un campo INT "Ordine" che praticamente mi server per Ordinare la visualizzazione dei record sulla pagina.

    Il problema è che se ho 10 record ho questo

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    Ma se elimino ad esempio il 6 mi torna

    1
    2
    3
    4
    5
    7
    8
    9
    10

    Mentre mi piacerebbe che automaticamente l'ordine si salvasse in sequenza

    1
    2
    3
    4
    5
    6
    7
    8
    9

    Capito?

    Posso settare qualcosa in mysql che lo faccia da solo, o devo farlo in php?
    Se lo devo fare in php come mi suggerite di fare?

    Ciao
    MITTICCOOOOOOOOO!

  2. #2
    se ne era gia' parlato... non dovresti mai spostare l'indice della tabella, serve a fornire un riferimento univoco al record.

    Piuttosto se ti serve una numerazione dei record estratti falla in php con un contatore da associare ai record.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    tradotto: ti serve un ciclo for da associare ai record!

  4. #4
    Ma io non cambio mica l'indice della tabella.
    per quello ho l' ID primario unsigned autoincrement.

    Questo campo invece è solo un INT e mi serve proprio che sia numerato ordinatamente.
    Devo essere salvato sul database e non solo in fase di estrazione.
    MITTICCOOOOOOOOO!

  5. #5
    [supersaibal]Originariamente inviato da froz
    tradotto: ti serve un ciclo for da associare ai record! [/supersaibal]
    perche' mai, si puo' fare con WHILE

    $i = 1;
    WHILE {

    ECHO $i;

    $i++;
    }

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    anke, certo...!

  7. #7
    avevo un problema simile e come ho detto poco fa, lo risolvi lanciando una query.
    mysql_query("SET @indice:=0;");
    mysql_query("UPDATE table SET colum=(@indice:=@indice+1) WHERE 1 ORDER BY ID;");


    Ricordati di rinominare la tabella e la colonna con i corrispettivi.
    ...

  8. #8
    [supersaibal]Originariamente inviato da LordSaga640
    avevo un problema simile e come ho detto poco fa, lo risolvi lanciando una query.
    mysql_query("SET @indice:=0;");
    mysql_query("UPDATE table SET colum=(@indice:=@indice+1) WHERE 1 ORDER BY ID;");


    Ricordati di rinominare la tabella e la colonna con i corrispettivi. [/supersaibal]
    Questa query puo' funzionare solo se il campo non e' chiave primaria e quindi possa accettare campi duplicati. Chi volesse utilizzare questo metodo deve rinunciare al campo autoincrement e sopratutto non si deve sognare di farlo se utilizza il campo come referenza per un altra tabella.

    Puo' andare bene per riallineare un campo contatore, ma non per una chiave primaria.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    infatti per me va benissimo!
    Ora provo
    MITTICCOOOOOOOOO!

  10. #10
    [supersaibal]Originariamente inviato da piero.mac
    Questa query puo' funzionare solo se il campo non e' chiave primaria e quindi possa accettare campi duplicati. Chi volesse utilizzare questo metodo deve rinunciare al campo autoincrement e sopratutto non si deve sognare di farlo se utilizza il campo come referenza per un altra tabella.

    Puo' andare bene per riallineare un campo contatore, ma non per una chiave primaria.

    [/supersaibal]
    No, funziona anche con primary key.

    Nell'altro posto non funzionava perchè gli indici partivano da zero, ecco spiegato il mistero.
    Praticamente si tentava di assegnare ZERO al primo record che entrava in conflitto con il secondo che aveva ID 1. Partendo però con un SET @indice:=-1; si riesce a ordinare tutto in modo perfetto perchè si riassegna l'indice partendo da zero.

    Ciao
    ...

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.