Newsgroup: it.comp.www.php
Titolo: registrare fatture: inizio anno

Un sistema in php mi registra le fatture di un e-commerce con un
numero consecutivo (con autoincrement di mysql).  Il problema è che
all'inizio dell'anno le fatture devono ricominciare da uno.  Come
faccio a gestire le tabelle (non avere duplicati, etc) e come
impostare il codice in php (mi devo rendere conto che sto cominciando
un nuovo anno e comnciare da uno)?
Grazie.



Per i numeri potresti vedere di dare una numerazione tipo annonumero (se
non ti piace l'anno in stampa lo puoi rimuovere).
Per il resto... aspettiamo qualche altro solerte quotatore :-)
-- 
Marco Bernardini
bernama chiocciola libero it

 ha scritto nel messaggio
news:rnj7tu8cgg473icef...@4ax.com...

beh.. usare un auto_increment per una cosa del genere è improprio perchè non
si dovrebbe considerarlo come un numero ma come una chiave per garantire
l'unicità della riga.
Comunque potresti risolvere con una tabella in cui metti l'id come
autoincrement di una chiave primaria multicolonna (anno e id).
CREATE TABLE test (
  anno mediumint(4) NOT NULL default '0',
  id mediumint(9) NOT NULL auto_increment,
  etc varchar(255) NOT NULL default '',
  PRIMARY KEY  (anno,id)
) TYPE=MyISAM;
A differenza di un auto_increment normale in questo caso viene riusato se
cancelli quello del valore più alto.. (inserisci 5 id per il 2002.. cancelli
l'ultimo.. ne inserisci un altro.. sarà 5).
Se però non è l'ultimo ad essere cancellato non viene riusato (ne inserisci
5.. cancelli il 3 .. il prossimo è il 6 ed hai 1-2-4-5-6). Non so se possa
andare bene..

 Grazie.
forse sbaglio ma gli elementi non sono chiari
Se č solo una tabella per le fatture e non la puoi modificare  ti conviene
fare un "cambio anno" .
a fine anno i copi tabella e dati in una nuova "ANNO_XX"
Svuoti i dati della originale e dovresti avere la condizione che cerchi e
cioč ripartire da zero.
Se puoi modificare/rifare la tabella allora dicci come č strutturata e forse
č piů facile.
ciao
--
paolo tosciri    ---   ICQ 119427174
e-mail: 
webm...@liara.com
sito di riferimento: 
www.liara.com


Forse la faccio troppo facile, ma usare una tabella diversa per ogni
anno?
Io faccio cosi', quando inserisco una fattura il sistema si accorge
(ovviamente) di che anno e' e quindi se e' il 30/12/2002 me la mette in
fatture_2002 con il numero a cui saro' arrivato a quella data, se e' il
4/1/2003 me la mette in fatture_2003 con l'index bello fresco che
riparte da 1.

anno?
si , ci avevo già pensato, ma dovrei creare da ora le tabelle vuote
per i prossimi 10 anni (x andare sul sicuro) e poi non è elegante
quando devo raccogliere i dati per visualizzarli (tante select su
diverse tabelle, etc).
Penso che la soluzione giusta sia di confrontare la data di
inserimento di una nuova fattura con la data dell'ultima fattura
inserita: se l'anno è diverso ricomincio da uno altrimenti il numero è
il successivo dell'ultimo numero che ho letto. Così metto tutto in una
tabella ed è abbastanza elegante come soluzione.
Es. 
ultima fattura inserita: n. 105 del 27/12/2002
inserisco nuova fattura il 03/01/2003.   2003>2002 allora numero
fattura = 1 (e non n. precedente 105 + 1).
(Scusate il ritardo con cui ho risposto ma non ho potuto farlo prima).

tabella ed è abbastanza elegante come soluzione.
Questione di gusti, io preferisco separare i dati (quando hanno una
separazione logica come nel caso degli anni) piuttosto che tenere tutto
insieme, ma il bello e' proprio poter fare le cose in tanti modi.