Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350

    campo numerico autoincrementante

    Sto facendo un form di inserimento fatture.
    Io vorrei avere un campo munerico (che mi definisce il numero delle fattura) autoincrementante e vorrei fare visualizzare ogni volta che si inserisce una nuova fattuta il numero progressivo.
    Ho provato ad usare l'id ma non riesco, perchè l'id viene assegnato quando si clicca sul borttone inserisci, non prima. E poi non va bene perchè se si elimina l'ultima fattura e se ne crea un'altra c'è un salto nella numerazione.
    Però non riesco nemmeno utilizzando un altro campo perchè PhpMyAdmin mi dice che è impossibile dare la caratteristica 'auto_increment' a un campo che non sia la chiave.
    C'è un modo per fare questo?
    pap

  2. #2
    Se hai l'esigenza di una numerazione progressiva per identificare una fattura il campo auto increment non e' indicato. Questo va bene per identificare "il record" e non la fattura. Sono due cose diverse.

    Di solito utilizzo una tabella apposita per la numerazione delle fatture. numero, data emissione, e quant'altro serve. Quando apro una fatturazione prenoto/occupo un numero.

    Ovviamente ci sono molti modi per gestire la cosa. Ma di fatto se fai una ottimizzazione delle tabelle arriveresti ad una conclusione simile.


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

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350
    In che senso utilizzi una tabell apposita? Potresti spiegarmi?
    Grazie
    pap

  4. #4
    Originariamente inviato da pap
    In che senso utilizzi una tabell apposita? Potresti spiegarmi?
    Grazie
    Una tabella che rappresenti l'anagrafe delle fatture a prescindere dal contenuto della fattura stessa. Puoi fare nel modo che piu' ti aggrada, la mia era solo una info su come farei.

    Ma il nocciolo della tua rischiesta e': Non devi usare lo stesso valore autoincrement che identifica un record che puo' essere modificato, cancellato, rimosso. Va contro il principio stesso dell'esistenza di una chiave primaria.


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

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350
    Ok ho capito, troverò un'altra soluzione.
    Ti chiedo ancora una cosa...
    Per il campo partita iva cosa usi? Io ho usato un bigint(11) ma non credo vada bene...
    Come si fa a fare in modo che non mi tolga lo zero che ci metto davanti? tipo: 01346755430
    pap

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Visto che non ci si fanno calcoli potresti usare un CHAR(11), oppure per gli INT usa ZEROFILL

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350
    Mi succede una cosa stranissima....
    Se provo ad inserire un'anagrafica cliente non mi considera il numero che io ho messo per partita iva... mi inserisce sempre lo stesso numero: 02147483647.
    Il campo è int(11) zerofill
    pap

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350
    02147483647 è il numero massimo supportato da int, ma io ho usato bigint... perché allora???
    pap

  9. #9
    Se si ferma a quel valore e' perche' il campo usato e' INT. Verifica la struttura della tabella. Il campo INT e' insufficiente per contenere la partita IVA che e' sempre di 11 digit numerici.

    Usa CHAR(11) come detto da Luca200 o BIGINT(11) UNSIGNED ZEROFILL.

    I campi numerici sono di dimensione prefissata. INT 4 byte, BIGINT 8 byte. Il numerello serve solo per visualizzare un numero di digit prefissati usando ZEROFILL, e non come limite di capienza del campo numerico che rimane sempre fisso.

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

  10. #10
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da pap
    io ho usato bigint... perché allora???
    Veramente nel post precedente hai scritto che il campo è INT.
    Effettivamente INT è insufficiente, se vuoi usare un numerico ti serve BIGINT

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