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

    [mysql] valore indice auto increment

    Ciao a tutti...
    Sto riscrivendo un mio codice per una galleria foto e mi sono accorto di una piccola imprecisione che ho usato.

    In due righe:
    ho un db che contiene tutti i dati delle foto.
    Quando faccio un upload chiamo l'immagine come l'id della tabella foto.
    Solo che per trovare questo id chiedo al db l'id dell'ultima foto e poi faccio +1.
    (lo so una roba schifosa)

    Attenzione: se tutto fila liscio il db resta allineato con i file, ma se faccio upload di una foto
    poi la cancello (trammite apposita pagina che ho creato) sia dal db che dal filesystem, succede che la foto che andrò a inserire successivamente avrà ancora nome (id dell'ultima foto +1) e invece id = id ultima foto +2 questo perchè l'auto increment della tabella ha contato quella inserita e poi cancellata.

    Dopo tutta questa spatafiata di roba passo alla domada,
    Esiste un modo per capire a che "auto increment" è la tabella?
    Quando esporto una tabella in sql alla fine dopo il set di caratteri usati dice: AUTO_INCREMENT=3 è possibile fare una query che restituisca quel numero?

    Grazie in anticipo per tutta la collaborazione....
    CIAO
    ...
    giO!

  2. #2
    Utente di HTML.it L'avatar di Webmaster76
    Registrato dal
    Mar 2001
    residenza
    Torino
    Messaggi
    298

    Re: [mysql] valore indice auto increment

    Usa semplicemente mysql_insert_id() dopo l'insert...

  3. #3
    salve,
    ma che succede se uno vuole imporre gli indici 1 a 10 e fare in modo che se non esiste il 2
    scrivere indice 2. Mysql scriverebbe 11 o superiore.

  4. #4
    Utente di HTML.it L'avatar di Webmaster76
    Registrato dal
    Mar 2001
    residenza
    Torino
    Messaggi
    298
    Originariamente inviato da Souldust2
    salve,
    ma che succede se uno vuole imporre gli indici 1 a 10 e fare in modo che se non esiste il 2
    scrivere indice 2. Mysql scriverebbe 11 o superiore.
    Non ha senso se parliamo di autoincrement... ma nulla ti vieta di mettere un campo INT e trattarlo COME se fosse un indice, avendo cura di come lo tratti (es valori duplicati ecc ecc), in questo modo potresti assegnare i valori che vuoi... l'autoincrement fa risparmiare queries e ti garantisce che il valore sia unico senza fare nessuna query di controllo.

  5. #5
    Non posso in quanto l'insert nel db necessita del dato per creare il nome della foto.
    Qundi il valore dell auto inc mi serve prima della query, ad inizio pagina, praticamente.
    Sto provando

    Codice PHP:
    $result mysql_query("SELECT LAST_INSERT_ID() AS pippo FROM foto"); 
    ma mi ritorna zero
    bho??


    x Souldust2:

    si mysql scrive 11 penso che altrimenti devi farti lo sbatti di controllare i buchi e riempirli.
    Non penso ci sia qulcosa che faccia in auto la cosa.
    Non conosco come hanno programmato l'auto_increment ma plausibilmente ad ogni insert prende il valore auto_increment e gli fa semplicemente +1.
    ...
    giO!

  6. #6
    Utente di HTML.it L'avatar di Webmaster76
    Registrato dal
    Mar 2001
    residenza
    Torino
    Messaggi
    298
    Originariamente inviato da rosafanti
    Non posso in quanto l'insert nel db necessita del dato per creare il nome della foto.
    Ma scusa... allora se la foto sarà sempre così
    ID 1 -> 1.jpg
    ID 7 -> 7.gif

    memorizzare il nome è inutile e ti crea solo complicazioni! Inserisci solamente l'estensione e quando la visualizzi basta $foto="[img]".$id.".".$estensione."[/img]";


  7. #7
    in effetti non hai tutti i torti, ma ero partito diversamente e volevo risolvere con questo trik...
    ma puoi fare chek dell'id auto_inc solo se prima fai una insert?
    ...
    giO!

  8. #8
    RISOLTO RISOLTO!!!

    Codice PHP:
    <?
    include("../connection/configdb.php");
    include(
    "../connection/connetti.php");
    $result mysql_query("SHOW TABLE STATUS LIKE 'foto'");
    $row mysql_fetch_array($result);
    echo 
    $row['Auto_increment'];
    include(
    "../connection/disconnetti.php");            
    ?>
    SHOW TABLE STATUS LIKE 'foto' è utilissimo da fuori una tab con tutti questi dati:
    Name
    Engine
    Version
    Row_format
    Rows
    Avg_row_length
    Data_length
    Max_data_length
    Index_length
    Data_free
    Auto_increment
    Create_time
    Update_time
    Check_time
    Collation
    Checksum
    Create_options
    Comment
    ...
    giO!

  9. #9
    Utente di HTML.it L'avatar di Webmaster76
    Registrato dal
    Mar 2001
    residenza
    Torino
    Messaggi
    298
    Originariamente inviato da rosafanti
    in effetti non hai tutti i torti, ma ero partito diversamente e volevo risolvere con questo trik...
    ma puoi fare chek dell'id auto_inc solo se prima fai una insert?
    Si potrebbe sapere il prossimo valore con una query SHOW TABLE STATUS, tra i valori c'è anche quello che ti interessa, ma ti sconsiglio di agire in questo modo, la query è abbastanza pesante/lenta ed è moltooooo meglio strutturare meglio il tuo script che cercare di arginare i problemi in quel modo...

  10. #10
    hai ragione per ora uso quella successivamente, quando ho un po' più di tempo metto in ordine e poi la metto a disposizione
    ...
    giO!

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.